diff --git a/src/drivers/MAVLinkServer/CMDVelclient.py b/src/drivers/MAVLinkServer/CMDVelclient.py
deleted file mode 100644
index ce824c839..000000000
--- a/src/drivers/MAVLinkServer/CMDVelclient.py
+++ /dev/null
@@ -1,32 +0,0 @@
-__author__ = 'robotica'
-
-import sys, traceback, Ice
-import jderobot, time
-
-status = 0
-ic = None
-try:
- ic = Ice.initialize(sys.argv)
- base = ic.stringToProxy("CMDVel:default -p 9999")
- datos = jderobot.CMDVelPrx.checkedCast(base)
- print (datos)
- if not datos:
- raise RuntimeError("Invalid proxy")
-
- while True:
- time.sleep(1)
- #data = datos.getCMDVelData()
- #print (data)
-except:
- traceback.print_exc()
- status = 1
-
-if ic:
- # Clean up
- try:
- ic.destroy()
- except:
- traceback.print_exc()
- status = 1
-
-sys.exit(status)
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/COPYING.txt b/src/drivers/MAVLinkServer/COPYING.txt
new file mode 100644
index 000000000..818433ecc
--- /dev/null
+++ b/src/drivers/MAVLinkServer/COPYING.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/src/drivers/MAVLinkServer/CMDVel.py b/src/drivers/MAVLinkServer/MAVProxy/CMDVel.py
similarity index 87%
rename from src/drivers/MAVLinkServer/CMDVel.py
rename to src/drivers/MAVLinkServer/MAVProxy/CMDVel.py
index 04e2bbfeb..eb9242c05 100644
--- a/src/drivers/MAVLinkServer/CMDVel.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/CMDVel.py
@@ -15,11 +15,11 @@ def __init__(self,lx,ly,lz,ax,ay,az):
self.angularY = ay
self.angularZ = az
- print ("cmdvel start")
+ #print ("cmdvel start")
- def __del__(self):
+ #def __del__(self):
- print ("cmdvel end")
+ #print ("cmdvel end")
def setCMDVelData(self, data, current=None):
@@ -39,7 +39,7 @@ def setCMDVelData(self, data, current=None):
def getCMDVelData(self, current=None):
- time.sleep(0.05) # 50 ms rate to rx CMDVel
+ time.sleep(0.05) # 20Hz (50ms) rate to rx CMDVel
lock.acquire()
@@ -50,7 +50,6 @@ def getCMDVelData(self, current=None):
data.angularX = self.angularX
data.angularY = self.angularY
data.angularZ = self.angularZ
-
lock.release()
return data
diff --git a/src/drivers/MAVLinkServer/CMakeLists.txt b/src/drivers/MAVLinkServer/MAVProxy/CMakeLists.txt
similarity index 100%
rename from src/drivers/MAVLinkServer/CMakeLists.txt
rename to src/drivers/MAVLinkServer/MAVProxy/CMakeLists.txt
diff --git a/src/drivers/MAVLinkServer/MAVProxy/Extra.py b/src/drivers/MAVLinkServer/MAVProxy/Extra.py
new file mode 100644
index 000000000..187105e39
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/Extra.py
@@ -0,0 +1,52 @@
+__author__ = 'AeroCano'
+
+import jderobot, time, threading
+
+lockLand = threading.Lock()
+lockTakeOff = threading.Lock()
+
+class ExtraI(jderobot.ArDroneExtra):
+
+ def __init__(self):
+
+ print ("Extra start")
+ self.landDecision = False
+ self.takeOffDecision = False
+
+ def land(self,xxx):
+ self.setLand(True)
+ lockLand.acquire()
+ landDecision = self.landDecision
+ lockLand.release()
+
+ return landDecision
+
+ def takeoff(self,xxx):
+ self.setTakeOff(True)
+ lockTakeOff.acquire()
+ takeOffDecision = self.takeOffDecision
+ lockTakeOff.release()
+
+ return takeOffDecision
+
+ def setLand(self,decision):
+ lockLand.acquire()
+ self.landDecision = decision
+ lockLand.release()
+
+ def setTakeOff(self, decision):
+ lockTakeOff.acquire()
+ self.takeOffDecision = decision
+ lockTakeOff.release()
+
+ def setExtraData(self, data, current=None):
+
+ lockLand.acquire()
+ self.landDecision = data.landDecision
+ lockLand.release()
+
+ lockTakeOff.acquire()
+ self.takeOffDecision = data.takeOffDecision
+ lockTakeOff.release()
+
+ return 0
diff --git a/src/drivers/MAVLinkServer/MAVLink.xml b/src/drivers/MAVLinkServer/MAVProxy/MAVLink.xml
similarity index 100%
rename from src/drivers/MAVLinkServer/MAVLink.xml
rename to src/drivers/MAVLinkServer/MAVProxy/MAVLink.xml
diff --git a/src/drivers/MAVLinkServer/MAVProxy/MAVProxyWinLAN.sh b/src/drivers/MAVLinkServer/MAVProxy/MAVProxyWinLAN.sh
new file mode 100755
index 000000000..cc8e045cf
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/MAVProxyWinLAN.sh
@@ -0,0 +1,5 @@
+cd ..
+
+python3.5 setup.py build install --user
+#python3.5 ./MAVProxy/mavproxy.py --master=10.1.1.191:14550 --console
+python3.5 ./MAVProxy/mavproxy.py --master=0.0.0.0:14550 --console
diff --git a/src/drivers/MAVLinkServer/Pose3D.py b/src/drivers/MAVLinkServer/MAVProxy/Pose3D.py
similarity index 64%
rename from src/drivers/MAVLinkServer/Pose3D.py
rename to src/drivers/MAVLinkServer/MAVProxy/Pose3D.py
index 27ecddf3f..f10e99dcc 100644
--- a/src/drivers/MAVLinkServer/Pose3D.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/Pose3D.py
@@ -17,33 +17,30 @@ def __init__(self,_x,_y,_z,_h,_q0,_q1,_q2,_q3):
self.q2 = _q2
self.q3 = _q3
- def setPose3DData(self,_x,_y,_z,_h,_q0,_q1,_q2,_q3):
+ print ("Pose3D start")
+
+ def setPose3DData(self, data, current=None):
lock.acquire()
- #print ('adquired S')
- self.x = _x
- self.y = _y
- self.z = _z
- self.h = _h
- self.q0 = _q0
- self.q1 = _q1
- self.q2 = _q2
- self.q3 = _q3
+ self.x = data.x
+ self.y = data.y
+ self.z = data.z
+ self.h = data.h
+ self.q0 = data.q0
+ self.q1 = data.q1
+ self.q2 = data.q2
+ self.q3 = data.q3
- #print ('released S')
lock.release()
return 0
-
-
def getPose3DData(self, current=None):
- time.sleep(0.05) #50 ms rate to tx Pose3D
+ time.sleep(0.05) # 20Hz (50ms) rate to tx Pose3D
lock.acquire()
- #print ('adquired G')
data = jderobot.Pose3DData()
data.x = self.x
@@ -55,7 +52,6 @@ def getPose3DData(self, current=None):
data.q2 = self.q2
data.q3 = self.q3
- #print ('released G')
lock.release()
- return data
\ No newline at end of file
+ return data
diff --git a/src/drivers/MAVLinkServer/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/__init__.py
similarity index 100%
rename from src/drivers/MAVLinkServer/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/__init__.py
diff --git a/src/drivers/MAVLinkServer/MAVProxy/mav.parm b/src/drivers/MAVLinkServer/MAVProxy/mav.parm
new file mode 100644
index 000000000..098136865
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/mav.parm
@@ -0,0 +1,503 @@
+ACCEL_Z_D 0.000000
+ACCEL_Z_FILT_HZ 20.000000
+ACCEL_Z_I 1.500000
+ACCEL_Z_IMAX 800.000000
+ACCEL_Z_P 0.750000
+ACRO_BAL_PITCH 1.000000
+ACRO_BAL_ROLL 1.000000
+ACRO_EXPO 0.300000
+ACRO_RP_P 4.000000
+ACRO_TRAINER 2.000000
+ACRO_YAW_P 1.000000
+AHRS_COMP_BETA 0.100000
+AHRS_GPS_GAIN 1.000000
+AHRS_GPS_MINSATS 6.000000
+AHRS_GPS_USE 1.000000
+AHRS_ORIENTATION 12.000000
+AHRS_RP_P 0.100000
+AHRS_TRIM_X 0.009756
+AHRS_TRIM_Y 0.007071
+AHRS_TRIM_Z 0.000000
+AHRS_WIND_MAX 0.000000
+AHRS_YAW_P 0.100000
+ANGLE_MAX 2000.000000
+ARMING_CHECK 1.000000
+ATC_ACCEL_P_MAX 36000.000000
+ATC_ACCEL_R_MAX 36000.000000
+ATC_ACCEL_Y_MAX 7000.000000
+ATC_LEAD_PIT_R 1.000000
+ATC_LEAD_PIT_W 0.000000
+ATC_LEAD_RLL_R 4.000000
+ATC_LEAD_RLL_W 15.000000
+ATC_RATE_FF_ENAB 1.000000
+ATC_SLEW_YAW 1000.000000
+AUTOTUNE_AGGR 0.100000
+AUTOTUNE_AXES 7.000000
+BATT2_AMP_OFFSET 0.000000
+BATT2_AMP_PERVOL 17.000000
+BATT2_CAPACITY 3300.000000
+BATT2_CURR_PIN 3.000000
+BATT2_MONITOR 0.000000
+BATT2_VOLT_MULT 10.100000
+BATT2_VOLT_PIN 2.000000
+BATT_AMP_OFFSET 0.000000
+BATT_AMP_PERVOLT 17.000000
+BATT_CAPACITY 5200.000000
+BATT_CURR_PIN 3.000000
+BATT_MONITOR 5.000000
+BATT_VOLT_MULT 10.100000
+BATT_VOLT_PIN 2.000000
+BRD_PWM_COUNT 4.000000
+BRD_SAFETYENABLE 0.000000
+BRD_SBUS_OUT 0.000000
+BRD_SER1_RTSCTS 1.000000
+BRD_SER2_RTSCTS 2.000000
+CAM_DURATION 10.000000
+CAM_SERVO_OFF 1100.000000
+CAM_SERVO_ON 1300.000000
+CAM_TRIGG_DIST 0.000000
+CAM_TRIGG_TYPE 0.000000
+CH10_OPT 0.000000
+CH11_OPT 0.000000
+CH12_OPT 0.000000
+CH7_OPT 0.000000
+CH8_OPT 0.000000
+CH9_OPT 0.000000
+CHUTE_ALT_MIN 10.000000
+CHUTE_ENABLED 0.000000
+CHUTE_SERVO_OFF 1100.000000
+CHUTE_SERVO_ON 1300.000000
+CHUTE_TYPE 0.000000
+CIRCLE_RADIUS 1000.000000
+CIRCLE_RATE 20.000000
+CLI_ENABLED 0.000000
+COMPASS_AUTODEC 1.000000
+COMPASS_DEC 0.000000
+COMPASS_DEV_ID 73225.000000
+COMPASS_DEV_ID2 131874.000000
+COMPASS_DEV_ID3 66826.000000
+COMPASS_DIA2_X 0.973857
+COMPASS_DIA2_Y 1.006992
+COMPASS_DIA2_Z 1.043458
+COMPASS_DIA3_X 1.000000
+COMPASS_DIA3_Y 1.000000
+COMPASS_DIA3_Z 1.000000
+COMPASS_DIA_X 1.027986
+COMPASS_DIA_Y 1.020255
+COMPASS_DIA_Z 0.920527
+COMPASS_EXTERN2 0.000000
+COMPASS_EXTERN3 0.000000
+COMPASS_EXTERNAL 1.000000
+COMPASS_LEARN 0.000000
+COMPASS_MOT2_X 0.000000
+COMPASS_MOT2_Y 0.000000
+COMPASS_MOT2_Z 0.000000
+COMPASS_MOT3_X 0.000000
+COMPASS_MOT3_Y 0.000000
+COMPASS_MOT3_Z 0.000000
+COMPASS_MOTCT 0.000000
+COMPASS_MOT_X 0.000000
+COMPASS_MOT_Y 0.000000
+COMPASS_MOT_Z 0.000000
+COMPASS_ODI2_X -0.078261
+COMPASS_ODI2_Y 0.019758
+COMPASS_ODI2_Z -0.014983
+COMPASS_ODI3_X 0.000000
+COMPASS_ODI3_Y 0.000000
+COMPASS_ODI3_Z 0.000000
+COMPASS_ODI_X 0.026693
+COMPASS_ODI_Y 0.012649
+COMPASS_ODI_Z -0.032334
+COMPASS_OFS2_X -246.821381
+COMPASS_OFS2_Y 37.114498
+COMPASS_OFS2_Z -59.822403
+COMPASS_OFS3_X 0.000000
+COMPASS_OFS3_Y 0.000000
+COMPASS_OFS3_Z 0.000000
+COMPASS_OFS_X -75.455086
+COMPASS_OFS_Y 128.053757
+COMPASS_OFS_Z 250.175201
+COMPASS_ORIENT 38.000000
+COMPASS_ORIENT2 0.000000
+COMPASS_ORIENT3 0.000000
+COMPASS_PRIMARY 0.000000
+COMPASS_USE 1.000000
+COMPASS_USE2 1.000000
+COMPASS_USE3 0.000000
+EKF_ABIAS_PNOISE 0.000050
+EKF_ACC_PNOISE 0.250000
+EKF_ALT_NOISE 2.000000
+EKF_ALT_SOURCE 1.000000
+EKF_EAS_GATE 10.000000
+EKF_EAS_NOISE 1.400000
+EKF_FALLBACK 1.000000
+EKF_FLOW_DELAY 10.000000
+EKF_FLOW_GATE 3.000000
+EKF_FLOW_NOISE 0.250000
+EKF_GBIAS_PNOISE 0.000001
+EKF_GLITCH_ACCEL 100.000000
+EKF_GLITCH_RAD 25.000000
+EKF_GND_GRADIENT 2.000000
+EKF_GPS_CHECK 127.000000
+EKF_GPS_LIM_HDFT 0.300000
+EKF_GPS_LIM_HDOP 240.000000
+EKF_GPS_LIM_HERR 5.000000
+EKF_GPS_LIM_HSPD 0.300000
+EKF_GPS_LIM_NSAT 6.000000
+EKF_GPS_LIM_SERR 1.000000
+EKF_GPS_LIM_VSPD 0.300000
+EKF_GPS_TYPE 0.000000
+EKF_GYRO_PNOISE 0.015000
+EKF_HGT_GATE 10.000000
+EKF_MAGB_PNOISE 0.000600
+EKF_MAGE_PNOISE 0.000600
+EKF_MAG_CAL 3.000000
+EKF_MAG_GATE 3.000000
+EKF_MAG_NOISE 0.050000
+EKF_MAX_FLOW 2.500000
+EKF_POSNE_NOISE 0.500000
+EKF_POS_DELAY 200.000000
+EKF_POS_GATE 5.000000
+EKF_RNG_GATE 5.000000
+EKF_VELD_NOISE 0.700000
+EKF_VELNE_NOISE 0.500000
+EKF_VEL_DELAY 200.000000
+EKF_VEL_GATE 4.000000
+EKF_WIND_PNOISE 0.100000
+EKF_WIND_PSCALE 0.500000
+EPM_ENABLE 0.000000
+EPM_GRAB 1900.000000
+EPM_NEUTRAL 1500.000000
+EPM_REGRAB 0.000000
+EPM_RELEASE 1100.000000
+ESC 0.000000
+FENCE_ACTION 0.000000
+FENCE_ALT_MAX 45.720001
+FENCE_ENABLE 1.000000
+FENCE_MARGIN 0.000000
+FENCE_RADIUS 300.000000
+FENCE_TYPE 1.000000
+FLOW_ENABLE 0.000000
+FLOW_FXSCALER 0.000000
+FLOW_FYSCALER 0.000000
+FLOW_ORIENT_YAW 0.000000
+FLTMODE1 5.000000
+FLTMODE2 5.000000
+FLTMODE3 5.000000
+FLTMODE4 5.000000
+FLTMODE5 5.000000
+FLTMODE6 5.000000
+FRAME 1.000000
+FS_BATT_CURR_RTL 0.000000
+FS_BATT_ENABLE 2.000000
+FS_BATT_MAH 520.000000
+FS_BATT_VOLTAGE 14.000000
+FS_EKF_ACTION 2.000000
+FS_EKF_THRESH 0.800000
+FS_GCS_ENABLE 0.000000
+FS_THR_ENABLE 1.000000
+FS_THR_VALUE 910.000000
+GND_ABS_PRESS 94686.640625
+GND_ALT_OFFSET 0.000000
+GND_TEMP 20.632702
+GPS_AUTO_SWITCH 1.000000
+GPS_INJECT_TO 127.000000
+GPS_MIN_DGPS 100.000000
+GPS_MIN_ELEV -100.000000
+GPS_NAVFILTER 6.000000
+GPS_SBAS_MODE 2.000000
+GPS_SBP_LOGMASK -256.000000
+GPS_TYPE 2.000000
+GPS_TYPE2 0.000000
+INS_ACC2OFFS_X 0.000270
+INS_ACC2OFFS_Y -0.007218
+INS_ACC2OFFS_Z 1.486737
+INS_ACC2SCAL_X 1.019099
+INS_ACC2SCAL_Y 0.989331
+INS_ACC2SCAL_Z 1.049657
+INS_ACC3OFFS_X 0.166762
+INS_ACC3OFFS_Y 0.020417
+INS_ACC3OFFS_Z -0.701632
+INS_ACC3SCAL_X 1.003736
+INS_ACC3SCAL_Y 0.995630
+INS_ACC3SCAL_Z 0.984779
+INS_ACCEL_FILTER 20.000000
+INS_ACCOFFS_X 0.071313
+INS_ACCOFFS_Y -0.044823
+INS_ACCOFFS_Z 0.195376
+INS_ACCSCAL_X 0.997250
+INS_ACCSCAL_Y 0.997433
+INS_ACCSCAL_Z 0.986688
+INS_GYR2OFFS_X -0.008188
+INS_GYR2OFFS_Y 0.017427
+INS_GYR2OFFS_Z -0.010080
+INS_GYR3OFFS_X 0.033627
+INS_GYR3OFFS_Y -0.028248
+INS_GYR3OFFS_Z 0.183651
+INS_GYROFFS_X -0.032742
+INS_GYROFFS_Y -0.030133
+INS_GYROFFS_Z -0.012776
+INS_GYRO_FILTER 20.000000
+INS_PRODUCT_ID 5.000000
+LAND_REPOSITION 1.000000
+LAND_SPEED 50.000000
+LGR_SERVO_DEPLOY 1750.000000
+LGR_SERVO_RTRACT 1250.000000
+LOG_BACKEND_TYPE 3.000000
+LOG_BITMASK 131070.000000
+MAG_ENABLE 1.000000
+MIS_RESTART 0.000000
+MIS_TOTAL 0.000000
+MNT_ANGMAX_PAN 4500.000000
+MNT_ANGMAX_ROL 4500.000000
+MNT_ANGMAX_TIL 0.000000
+MNT_ANGMIN_PAN -4500.000000
+MNT_ANGMIN_ROL -4500.000000
+MNT_ANGMIN_TIL -9000.000000
+MNT_DEFLT_MODE 3.000000
+MNT_JSTICK_SPD 0.000000
+MNT_LEAD_PTCH 0.000000
+MNT_LEAD_RLL 0.000000
+MNT_NEUTRAL_X 0.000000
+MNT_NEUTRAL_Y 0.000000
+MNT_NEUTRAL_Z 0.000000
+MNT_RC_IN_PAN 0.000000
+MNT_RC_IN_ROLL 0.000000
+MNT_RC_IN_TILT 6.000000
+MNT_RETRACT_X 0.000000
+MNT_RETRACT_Y 0.000000
+MNT_RETRACT_Z 0.000000
+MNT_STAB_PAN 0.000000
+MNT_STAB_ROLL 0.000000
+MNT_STAB_TILT 0.000000
+MNT_TYPE 2.000000
+MOT_CURR_MAX 42.000000
+MOT_SPIN_ARMED 75.000000
+MOT_THR_MIX_MIN 0.150000
+MOT_THST_BAT_MAX 16.799999
+MOT_THST_BAT_MIN 12.000000
+MOT_THST_EXPO 0.800000
+MOT_THST_MAX 0.940000
+MOT_YAW_HEADROOM 200.000000
+PHLD_BRAKE_ANGLE 3000.000000
+PHLD_BRAKE_RATE 8.000000
+PILOT_ACCEL_Z 100.000000
+PILOT_THR_BHV 1.000000
+PILOT_THR_FILT 2.000000
+PILOT_TKOFF_ALT 75.000000
+PILOT_TKOFF_DZ 250.000000
+PILOT_VELZ_MAX 133.000000
+POS_XY_P 0.700000
+POS_Z_P 1.000000
+PSC_ACC_XY_FILT 2.000000
+RALLY_LIMIT_KM 0.000000
+RALLY_TOTAL 0.000000
+RATE_PIT_D 0.008000
+RATE_PIT_FILT_HZ 40.000000
+RATE_PIT_I 0.168000
+RATE_PIT_IMAX 3000.000000
+RATE_PIT_P 0.168000
+RATE_RLL_D 0.007200
+RATE_RLL_FILT_HZ 40.000000
+RATE_RLL_I 0.116000
+RATE_RLL_IMAX 3000.000000
+RATE_RLL_P 0.116000
+RATE_YAW_D 0.000000
+RATE_YAW_FILT_HZ 7.600000
+RATE_YAW_I 0.066000
+RATE_YAW_IMAX 1000.000000
+RATE_YAW_P 0.660000
+RC10_DZ 0.000000
+RC10_FUNCTION 0.000000
+RC10_MAX 1900.000000
+RC10_MIN 1100.000000
+RC10_REV 1.000000
+RC10_TRIM 1500.000000
+RC11_DZ 0.000000
+RC11_FUNCTION 0.000000
+RC11_MAX 1900.000000
+RC11_MIN 1100.000000
+RC11_REV 1.000000
+RC11_TRIM 1500.000000
+RC12_DZ 0.000000
+RC12_FUNCTION 0.000000
+RC12_MAX 1900.000000
+RC12_MIN 1100.000000
+RC12_REV 1.000000
+RC12_TRIM 1500.000000
+RC13_DZ 0.000000
+RC13_FUNCTION 0.000000
+RC13_MAX 1900.000000
+RC13_MIN 1100.000000
+RC13_REV 1.000000
+RC13_TRIM 1500.000000
+RC14_DZ 0.000000
+RC14_FUNCTION 0.000000
+RC14_MAX 1900.000000
+RC14_MIN 1100.000000
+RC14_REV 1.000000
+RC14_TRIM 1500.000000
+RC1_DZ 10.000000
+RC1_MAX 2000.000000
+RC1_MIN 1000.000000
+RC1_REV 1.000000
+RC1_TRIM 1500.000000
+RC2_DZ 10.000000
+RC2_MAX 2000.000000
+RC2_MIN 1000.000000
+RC2_REV 1.000000
+RC2_TRIM 1500.000000
+RC3_DZ 30.000000
+RC3_MAX 1900.000000
+RC3_MIN 1000.000000
+RC3_REV 1.000000
+RC3_TRIM 1500.000000
+RC4_DZ 10.000000
+RC4_MAX 2000.000000
+RC4_MIN 1000.000000
+RC4_REV 1.000000
+RC4_TRIM 1500.000000
+RC5_DZ 0.000000
+RC5_FUNCTION 0.000000
+RC5_MAX 1900.000000
+RC5_MIN 1100.000000
+RC5_REV 1.000000
+RC5_TRIM 1500.000000
+RC6_DZ 0.000000
+RC6_FUNCTION 0.000000
+RC6_MAX 1520.000000
+RC6_MIN 1000.000000
+RC6_REV 1.000000
+RC6_TRIM 1000.000000
+RC7_DZ 0.000000
+RC7_FUNCTION 0.000000
+RC7_MAX 1900.000000
+RC7_MIN 1100.000000
+RC7_REV 1.000000
+RC7_TRIM 1500.000000
+RC8_DZ 0.000000
+RC8_FUNCTION 0.000000
+RC8_MAX 1900.000000
+RC8_MIN 1100.000000
+RC8_REV 1.000000
+RC8_TRIM 1500.000000
+RC9_DZ 0.000000
+RC9_FUNCTION 0.000000
+RC9_MAX 1900.000000
+RC9_MIN 1100.000000
+RC9_REV 1.000000
+RC9_TRIM 1500.000000
+RCMAP_PITCH 2.000000
+RCMAP_ROLL 1.000000
+RCMAP_THROTTLE 3.000000
+RCMAP_YAW 4.000000
+RC_FEEL_RP 20.000000
+RC_SPEED 490.000000
+RELAY_DEFAULT 0.000000
+RELAY_PIN 54.000000
+RELAY_PIN2 55.000000
+RELAY_PIN3 -1.000000
+RELAY_PIN4 -1.000000
+RNGFND2_FUNCTION 0.000000
+RNGFND2_GNDCLEAR 10.000000
+RNGFND2_MAX_CM 700.000000
+RNGFND2_MIN_CM 20.000000
+RNGFND2_OFFSET 0.000000
+RNGFND2_PIN -1.000000
+RNGFND2_RMETRIC 1.000000
+RNGFND2_SCALING 3.000000
+RNGFND2_SETTLE 0.000000
+RNGFND2_STOP_PIN -1.000000
+RNGFND2_TYPE 0.000000
+RNGFND_FUNCTION 0.000000
+RNGFND_GAIN 0.800000
+RNGFND_GNDCLEAR 10.000000
+RNGFND_MAX_CM 700.000000
+RNGFND_MIN_CM 20.000000
+RNGFND_OFFSET 0.000000
+RNGFND_PIN -1.000000
+RNGFND_PWRRNG 0.000000
+RNGFND_RMETRIC 1.000000
+RNGFND_SCALING 3.000000
+RNGFND_SETTLE 0.000000
+RNGFND_STOP_PIN -1.000000
+RNGFND_TYPE 0.000000
+RSSI_PIN -1.000000
+RSSI_RANGE 5.000000
+RTL_ALT 2500.000000
+RTL_ALT_FINAL 0.000000
+RTL_CLIMB_MIN 1000.000000
+RTL_CONE_SLOPE 3.000000
+RTL_LOIT_TIME 5000.000000
+RTL_SPEED 1000.000000
+SCHED_DEBUG 0.000000
+SERIAL0_BAUD 115.000000
+SERIAL1_BAUD 921.000000
+SERIAL1_PROTOCOL 1.000000
+SERIAL2_BAUD 57.000000
+SERIAL2_PROTOCOL 0.000000
+SERIAL3_BAUD 38.000000
+SERIAL3_PROTOCOL 5.000000
+SERIAL4_BAUD 230.000000
+SERIAL4_PROTOCOL 1.000000
+SIMPLE 0.000000
+SR0_EXTRA1 0.000000
+SR0_EXTRA2 0.000000
+SR0_EXTRA3 0.000000
+SR0_EXT_STAT 0.000000
+SR0_PARAMS 0.000000
+SR0_POSITION 0.000000
+SR0_RAW_CTRL 0.000000
+SR0_RAW_SENS 20.000000
+SR0_RC_CHAN 0.000000
+SR1_EXTRA1 4.000000
+SR1_EXTRA2 4.000000
+SR1_EXTRA3 4.000000
+SR1_EXT_STAT 4.000000
+SR1_PARAMS 10.000000
+SR1_POSITION 4.000000
+SR1_RAW_CTRL 4.000000
+SR1_RAW_SENS 4.000000
+SR1_RC_CHAN 4.000000
+SR2_EXTRA1 0.000000
+SR2_EXTRA2 0.000000
+SR2_EXTRA3 0.000000
+SR2_EXT_STAT 0.000000
+SR2_PARAMS 0.000000
+SR2_POSITION 0.000000
+SR2_RAW_CTRL 0.000000
+SR2_RAW_SENS 0.000000
+SR2_RC_CHAN 0.000000
+STB_PIT_P 8.000000
+STB_RLL_P 9.500000
+STB_YAW_P 7.000000
+SUPER_SIMPLE 0.000000
+SYSID_MYGCS 255.000000
+SYSID_SW_MREV 120.000000
+SYSID_SW_TYPE 10.000000
+SYSID_THISMAV 1.000000
+TELEM_DELAY 0.000000
+TERRAIN_ENABLE 1.000000
+TERRAIN_SPACING 100.000000
+THR_DZ 10.000000
+THR_MID 400.000000
+THR_MIN 130.000000
+TUNE 0.000000
+TUNE_HIGH 1000.000000
+TUNE_LOW 0.000000
+VEL_XY_FILT_HZ 5.000000
+VEL_XY_I 0.500000
+VEL_XY_IMAX 1000.000000
+VEL_XY_P 1.400000
+VEL_Z_P 5.000000
+WPNAV_ACCEL 340.000000
+WPNAV_ACCEL_Z 160.000000
+WPNAV_LOIT_JERK 1000.000000
+WPNAV_LOIT_MAXA 229.000000
+WPNAV_LOIT_MINA 108.000000
+WPNAV_LOIT_SPEED 500.000000
+WPNAV_RADIUS 200.000000
+WPNAV_SPEED 1100.000000
+WPNAV_SPEED_DN 240.000000
+WPNAV_SPEED_UP 320.000000
+WP_YAW_BEHAVIOR 2.000000
diff --git a/src/drivers/MAVLinkServer/modules/lib/ANUGA/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/mav.tlog
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/ANUGA/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/mav.tlog
diff --git a/src/drivers/MAVLinkServer/MAVProxy/mav.tlog.raw b/src/drivers/MAVLinkServer/MAVProxy/mav.tlog.raw
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/drivers/MAVLinkServer/MAVLinkServer.py b/src/drivers/MAVLinkServer/MAVProxy/mavproxy.py
old mode 100644
new mode 100755
similarity index 71%
rename from src/drivers/MAVLinkServer/MAVLinkServer.py
rename to src/drivers/MAVLinkServer/MAVProxy/mavproxy.py
index 408797305..7c28eca5b
--- a/src/drivers/MAVLinkServer/MAVLinkServer.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/mavproxy.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
'''
mavproxy - a MAVLink proxy program
@@ -9,23 +9,37 @@
import sys, os, time, socket, signal
import fnmatch, errno, threading
-import serial, Queue, select
+import serial, select
+import queue as Queue
+import imp
import traceback
import select
import shlex
import math
-import Ice, jderobot
-import easyiceconfig as EasyIce
+import Ice
+import jderobot
+import multiprocessing
+import time
from MAVProxy.modules.lib import textconsole
from MAVProxy.modules.lib import rline
from MAVProxy.modules.lib import mp_module
from MAVProxy.modules.lib import dumpstacks
+from MAVProxy.modules.lib import udp
+from MAVProxy.modules.lib import tcp
+
+import easyiceconfig as EasyIce
from Pose3D import Pose3DI
from CMDVel import CMDVelI
+from Extra import ExtraI
from pymavlink import quaternion
+global operation_takeoff
+global time_init_operation_takeoff
+global time_end_operation_takeoff
+global on_air
+
# adding all this allows pyinstaller to build a working windows executable
# note that using --hidden-import does not work for these modules
try:
@@ -57,7 +71,6 @@ def __init__(self):
self.exit = False
self.flightmode = 'MAV'
self.last_mode_announce = 0
- self.last_mode_announced = 'MAV'
self.logdir = None
self.last_heartbeat = 0
self.last_message = 0
@@ -122,7 +135,9 @@ def __init__(self):
class MPState(object):
'''holds state of mavproxy'''
def __init__(self):
- self.console = textconsole.SimpleConsole()
+ self.udp = udp.UdpServer()
+ self.tcp = tcp.TcpServer()
+ self.console = textconsole.SimpleConsole(udp = self.udp, tcp = self.tcp)
self.map = None
self.map_functions = {}
self.vehicle_type = None
@@ -130,8 +145,8 @@ def __init__(self):
from MAVProxy.modules.lib.mp_settings import MPSettings, MPSetting
self.settings = MPSettings(
[ MPSetting('link', int, 1, 'Primary Link', tab='Link', range=(0,4), increment=1),
- MPSetting('streamrate', int, 4, 'Stream rate link1', range=(-1,100), increment=1),
- MPSetting('streamrate2', int, 4, 'Stream rate link2', range=(-1,100), increment=1),
+ MPSetting('streamrate', int, 4, 'Stream rate link1', range=(-1,20), increment=1),
+ MPSetting('streamrate2', int, 4, 'Stream rate link2', range=(-1,20), increment=1),
MPSetting('heartbeat', int, 1, 'Heartbeat rate', range=(0,5), increment=1),
MPSetting('mavfwd', bool, True, 'Allow forwarded control'),
MPSetting('mavfwd_rate', bool, False, 'Allow forwarded rate control'),
@@ -161,8 +176,7 @@ def __init__(self):
MPSetting('source_component', int, 0, 'MAVLink Source component', range=(0,255), increment=1),
MPSetting('target_system', int, 0, 'MAVLink target system', range=(0,255), increment=1),
MPSetting('target_component', int, 0, 'MAVLink target component', range=(0,255), increment=1),
- MPSetting('state_basedir', str, None, 'base directory for logs and aircraft directories'),
- MPSetting('allow_unsigned', bool, True, 'whether unsigned packets will be accepted')
+ MPSetting('state_basedir', str, None, 'base directory for logs and aircraft directories')
])
self.completions = {
@@ -201,14 +215,13 @@ def module(self, name):
if name in self.public_modules:
return self.public_modules[name]
return None
-
+
def master(self):
'''return the currently chosen mavlink master object'''
if len(self.mav_master) == 0:
return None
if self.settings.link > len(self.mav_master):
self.settings.link = 1
-
# try to use one with no link error
if not self.mav_master[self.settings.link-1].linkerror:
return self.mav_master[self.settings.link-1]
@@ -275,7 +288,7 @@ def load_module(modname, quiet=False):
for modpath in modpaths:
try:
m = import_package(modpath)
- reload(m)
+ imp.reload(m)
module = m.init(mpstate)
if isinstance(module, mp_module.MPModule):
mpstate.modules.append((module, m))
@@ -337,7 +350,7 @@ def cmd_module(args):
reload(pmodule)
except ImportError:
clear_zipimport_cache()
- reload(pmodule)
+ reload(pmodule)
if load_module(modname, quiet=True):
print("Reloaded module %s" % modname)
elif args[0] == "unload":
@@ -387,7 +400,7 @@ def clear_zipimport_cache():
import sys, zipimport
syspath_backup = list(sys.path)
zipimport._zip_directory_cache.clear()
-
+
# load back items onto sys.path
sys.path = syspath_backup
# add this too: see https://mail.python.org/pipermail/python-list/2005-May/353229.html
@@ -405,7 +418,7 @@ def import_package(name):
except ImportError:
clear_zipimport_cache()
mod = __import__(name)
-
+
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
@@ -423,24 +436,15 @@ def import_package(name):
'alias' : (cmd_alias, 'command aliases')
}
-def shlex_quotes(value):
- '''see http://stackoverflow.com/questions/6868382/python-shlex-split-ignore-single-quotes'''
- lex = shlex.shlex(value)
- lex.quotes = '"'
- lex.whitespace_split = True
- lex.commenters = ''
- return list(lex)
-
def process_stdin(line):
'''handle commands from user'''
if line is None:
sys.exit(0)
-
# allow for modules to override input handling
if mpstate.functions.input_handler is not None:
mpstate.functions.input_handler(line)
return
-
+
line = line.strip()
if mpstate.status.setup_mode:
@@ -460,16 +464,16 @@ def process_stdin(line):
if not line:
return
- args = shlex_quotes(line)
+ args = shlex.split(line)
cmd = args[0]
while cmd in mpstate.aliases:
line = mpstate.aliases[cmd]
args = shlex.split(line) + args[1:]
cmd = args[0]
-
+
if cmd == 'help':
k = command_map.keys()
- k.sort()
+ #k.sort()
for cmd in k:
(fn, help) = command_map[cmd]
print("%-15s : %s" % (cmd, help))
@@ -477,7 +481,10 @@ def process_stdin(line):
if cmd == 'exit' and mpstate.settings.requireexit:
mpstate.status.exit = True
return
-
+ ######################################################################################################
+ if cmd == 'velocity' and len(args) == 4:
+ PH_CMDVel = CMDVelI(args[1],args[2],args[3],0,0,0) #1 to avoid indeterminations
+ ######################################################################################################
if not cmd in command_map:
for (m,pm) in mpstate.modules:
if hasattr(m, 'unknown_command'):
@@ -488,6 +495,7 @@ def process_stdin(line):
print("ERROR in command: %s" % str(e))
print("Unknown command '%s'" % line)
return
+
(fn, help) = command_map[cmd]
try:
fn(args[1:])
@@ -595,14 +603,11 @@ def log_writer():
def log_paths():
'''Returns tuple (logdir, telemetry_log_filepath, raw_telemetry_log_filepath)'''
if opts.aircraft is not None:
- dirname = ""
- if(opts.daemon):
- dirname = '/var/log/'
if opts.mission is not None:
print(opts.mission)
- dirname += "%s/logs/%s/Mission%s" % (opts.aircraft, time.strftime("%Y-%m-%d"), opts.mission)
+ dirname = "%s/logs/%s/Mission%s" % (opts.aircraft, time.strftime("%Y-%m-%d"), opts.mission)
else:
- dirname += "%s/logs/%s" % (opts.aircraft, time.strftime("%Y-%m-%d"))
+ dirname = "%s/logs/%s" % (opts.aircraft, time.strftime("%Y-%m-%d"))
# dirname is currently relative. Possibly add state_basedir:
if mpstate.settings.state_basedir is not None:
dirname = os.path.join(mpstate.settings.state_basedir,dirname)
@@ -625,11 +630,7 @@ def log_paths():
dir_path = os.path.dirname(opts.logfile)
if not os.path.isabs(dir_path) and mpstate.settings.state_basedir is not None:
dir_path = os.path.join(mpstate.settings.state_basedir,dir_path)
-
- if(opts.daemon):
- logdir = '/var/log'
- else:
- logdir = dir_path
+ logdir = dir_path
mkdir_p(logdir)
return (logdir,
@@ -643,31 +644,17 @@ def open_telemetry_logs(logpath_telem, logpath_telem_raw):
mode = 'a'
else:
mode = 'w'
-
- try:
- mpstate.logfile = open(logpath_telem, mode=mode)
- mpstate.logfile_raw = open(logpath_telem_raw, mode=mode)
- print("Log Directory: %s" % mpstate.status.logdir)
- print("Telemetry log: %s" % logpath_telem)
-
- #make sure there's enough free disk space for the logfile (>200Mb)
- stat = os.statvfs(logpath_telem)
- if stat.f_bfree*stat.f_bsize < 209715200:
- print("ERROR: Not enough free disk space for logfile")
- mpstate.status.exit = True
- return
-
- # use a separate thread for writing to the logfile to prevent
- # delays during disk writes (important as delays can be long if camera
- # app is running)
- t = threading.Thread(target=log_writer, name='log_writer')
- t.daemon = True
- t.start()
- except Exception as e:
- print("ERROR: opening log file for writing: %s" % e)
- mpstate.status.exit = True
- return
-
+ mpstate.logfile = open(logpath_telem, mode=mode)
+ mpstate.logfile_raw = open(logpath_telem_raw, mode=mode)
+ print("Log Directory: %s" % mpstate.status.logdir)
+ print("Telemetry log: %s" % logpath_telem)
+
+ # use a separate thread for writing to the logfile to prevent
+ # delays during disk writes (important as delays can be long if camera
+ # app is running)
+ t = threading.Thread(target=log_writer, name='log_writer')
+ t.daemon = True
+ t.start()
def set_stream_rates():
'''set mavlink stream rates'''
@@ -745,145 +732,176 @@ def periodic_tasks():
if m.needs_unloading:
unload_module(m.name)
+def listener_loop():
+ while True:
+ main_loop()
+
def main_loop():
'''main processing loop'''
if not mpstate.status.setup_mode and not opts.nowait:
for master in mpstate.mav_master:
send_heartbeat(master)
- if master.linknum == 0:
- print("Waiting for heartbeat from %s" % master.address)
- master.wait_heartbeat()
+ #if master.linknum == 0:
+ # print("Waiting for heartbeat from %s" % master.address)
+ # master.wait_heartbeat()
set_stream_rates()
+ if mpstate is None or mpstate.status.exit:
+ return
+ #cmd
+
+ global on_air
+ global operation_takeoff
+ global time_init_operation_takeoff
+ global time_end_operation_takeoff
+
+ time_now = int(round(time.time() * 1000))
+
+ if operation_takeoff and time_now > time_end_operation_takeoff:
+ print("Taking off")
+ time_init_operation_takeoff = int(round(time.time() * 1000))
+ time_end_operation_takeoff = time_init_operation_takeoff + 7000
+ operation_takeoff = False
+ on_air = True
+ mpstate.input_queue.put("takeoff 1")
+
+ if on_air and time_now > time_end_operation_takeoff:
+ mpstate.input_queue.put("mode guided")
+ print("Mode guided on")
+ on_air = False
+
+ while not mpstate.input_queue.empty():
+ line = mpstate.input_queue.get()
+ mpstate.input_count += 1
+ cmds = line.split(';')
+ if len(cmds) == 1 and cmds[0] == "":
+ mpstate.empty_input_count += 1
+ for c in cmds:
+ process_stdin(c)
- while True:
- if mpstate is None or mpstate.status.exit:
- return
- while not mpstate.input_queue.empty():
- line = mpstate.input_queue.get()
- mpstate.input_count += 1
- cmds = line.split(';')
- if len(cmds) == 1 and cmds[0] == "":
- mpstate.empty_input_count += 1
- for c in cmds:
- process_stdin(c)
-
+ for master in mpstate.mav_master:
+ if master.fd is None:
+ if master.port.inWaiting() > 0:
+ process_master(master)
+ periodic_tasks()
+ rin = []
+ for master in mpstate.mav_master:
+ if master.fd is not None and not master.portdead:
+ rin.append(master.fd)
+ for m in mpstate.mav_outputs:
+ rin.append(m.fd)
+ for sysid in mpstate.sysid_outputs:
+ m = mpstate.sysid_outputs[sysid]
+ rin.append(m.fd)
+ if rin == []:
+ time.sleep(0.0001)
+ return
+ for fd in mpstate.select_extra:
+ rin.append(fd)
+ try:
+ (rin, win, xin) = select.select(rin, [], [], mpstate.settings.select_timeout)
+ except select.error:
+ return
+ if mpstate is None:
+ return
+ for fd in rin:
+ if mpstate is None:
+ return
for master in mpstate.mav_master:
- if master.fd is None:
- if master.port.inWaiting() > 0:
+ if fd == master.fd:
process_master(master)
-
- periodic_tasks()
-
- rin = []
- for master in mpstate.mav_master:
- if master.fd is not None and not master.portdead:
- rin.append(master.fd)
+ if mpstate is None:
+ return
+ return
for m in mpstate.mav_outputs:
- rin.append(m.fd)
+ if fd == m.fd:
+ process_mavlink(m)
+ if mpstate is None:
+ return
+ return
for sysid in mpstate.sysid_outputs:
m = mpstate.sysid_outputs[sysid]
- rin.append(m.fd)
- if rin == []:
- time.sleep(0.0001)
- continue
-
- for fd in mpstate.select_extra:
- rin.append(fd)
- try:
- (rin, win, xin) = select.select(rin, [], [], mpstate.settings.select_timeout)
- except select.error:
- continue
-
- if mpstate is None:
- return
-
- for fd in rin:
- if mpstate is None:
- return
- for master in mpstate.mav_master:
- if fd == master.fd:
- process_master(master)
- if mpstate is None:
- return
- continue
- for m in mpstate.mav_outputs:
- if fd == m.fd:
- process_mavlink(m)
- if mpstate is None:
- return
- continue
-
- for sysid in mpstate.sysid_outputs:
- m = mpstate.sysid_outputs[sysid]
- if fd == m.fd:
- process_mavlink(m)
- if mpstate is None:
- return
- continue
-
- # this allow modules to register their own file descriptors
- # for the main select loop
- if fd in mpstate.select_extra:
- try:
- # call the registered read function
- (fn, args) = mpstate.select_extra[fd]
- fn(args)
- except Exception as msg:
- if mpstate.settings.moddebug == 1:
- print(msg)
- # on an exception, remove it from the select list
- mpstate.select_extra.pop(fd)
-
-
- ########################## Jorge Cano CODE ##########################
+ if fd == m.fd:
+ process_mavlink(m)
+ if mpstate is None:
+ return
+ return
+ # this allow modules to register their own file descriptors
+ # for the main select loop
+ if fd in mpstate.select_extra:
+ try:
+ # call the registered read function
+ (fn, args) = mpstate.select_extra[fd]
+ fn(args)
+ except Exception as msg:
+ if mpstate.settings.moddebug == 1:
+ print(msg)
+ # on an exception, remove it from the select list
+ mpstate.select_extra.pop(fd)
+ ########################## Jorge Cano CODE ##########################
Rollvalue = mpstate.status.msgs['ATTITUDE'].roll #rad
Pitchvalue = mpstate.status.msgs['ATTITUDE'].pitch #rad
Yawvalue = mpstate.status.msgs['ATTITUDE'].yaw #rad
# ESTIMATED: fused GPS and accelerometers
- Latvalue = math.radians((mpstate.status.msgs['GLOBAL_POSITION_INT'].lat)/1E7) #rad
- Lonvalue = math.radians((mpstate.status.msgs['GLOBAL_POSITION_INT'].lon)/1E7) #rad
- Altvalue = (mpstate.status.msgs['GLOBAL_POSITION_INT'].alt)/1000 #meters
+ PoseLatLonHei = {}
+ PoseLatLonHei['lat'] = math.radians((mpstate.status.msgs['GLOBAL_POSITION_INT'].lat)/1E7) #rad
+ PoseLatLonHei['lon'] = math.radians((mpstate.status.msgs['GLOBAL_POSITION_INT'].lon)/1E7) #rad
+ PoseLatLonHei['hei'] = (mpstate.status.msgs['GLOBAL_POSITION_INT'].relative_alt)/1000 #meters
PH_quat = quaternion.Quaternion([Rollvalue, Pitchvalue, Yawvalue])
- PH_xyz = spherical2cartesian(Latvalue, Lonvalue, Altvalue)
+ PH_xyz = global2cartesian(PoseLatLonHei)
- #print (PH_quat)
- #print (PH_xyz)
+ #print PH_quat
+ #print PH_xyz
- PHx = PH_xyz[0]
- PHy = PH_xyz[1]
- PHz = PH_xyz[2]
- PHh = 1 #Altvalue
- PHq0 = PH_quat.__getitem__(0)
- PHq1 = PH_quat.__getitem__(1)
- PHq2 = PH_quat.__getitem__(2)
- PHq3 = PH_quat.__getitem__(3)
+ data = jderobot.Pose3DData()
+ data.x = PH_xyz['x']
+ data.y = PH_xyz['y']
+ data.z = PH_xyz['z']
+ data.h = 1
+ data.q0 = PH_quat.__getitem__(0)
+ data.q1 = PH_quat.__getitem__(1)
+ data.q2 = PH_quat.__getitem__(2)
+ data.q3 = PH_quat.__getitem__(3)
- PH_Pose3D.setPose3DData(PHx,PHy,PHz,PHh,PHq0,PHq1,PHq2,PHq3)
-
- #print (PH_Pose3D.x)
-
- #pixhawkpos = Pose3DI(PHx,PHy,PHz,PHh,PHq0,PHq1,PHq2,PHq3)
- #pixhawkpos.setPose3DData(PHx,PHy,PHz,PHh,PHq0,PHq1,PHq2,PHq3)
- #PH_Pose3D.printPose3DData(PH_Pose3D)
+ PH_Pose3D.setPose3DData(data)
#####################################################################
-
def input_loop():
'''wait for user input'''
+ global operation_takeoff
+ global time_init_operation_takeoff
+ global time_end_operation_takeoff
+
while mpstate.status.exit != True:
try:
if mpstate.status.exit != True:
- line = raw_input(mpstate.rl.prompt)
+ if mpstate.udp.bound():
+ line = mpstate.udp.readln()
+ mpstate.udp.writeln(line)
+ elif mpstate.tcp.connected():
+ line = mpstate.tcp.readln()
+ mpstate.tcp.writeln(line)
+ else:
+ line = input(mpstate.rl.prompt)
+ if line == 'takeoff':
+ print("Detecto takeoff")
+ operation_takeoff=True
+ time_init_operation_takeoff = int(round(time.time() * 1000))
+ time_end_operation_takeoff = time_init_operation_takeoff + 5000
+ print(time_end_operation_takeoff)
+ mpstate.input_queue.put("arm throttle")
+ return
+ if line == 'land':
+ print("Orden de aterrizar")
+ on_air = False
except EOFError:
mpstate.status.exit = True
sys.exit(1)
mpstate.input_queue.put(line)
-
def run_script(scriptfile):
'''run a script file'''
try:
@@ -905,12 +923,11 @@ def run_script(scriptfile):
########################## Jorge Cano CODE ##########################
def openPose3DChannel(Pose3D):
-
status = 0
ic = None
Pose2Tx = Pose3D #Pose3D.getPose3DData()
try:
- ic = EasyIce.initialize(sys.argv)
+ ic = Ice.initialize(sys.argv)
adapter = ic.createObjectAdapterWithEndpoints("Pose3DAdapter", "default -p 9998")
object = Pose2Tx
#print (object.getPose3DData())
@@ -931,15 +948,42 @@ def openPose3DChannel(Pose3D):
sys.exit(status)
+def openPose3DChannelWP(Pose3D):
+
+ status = 0
+ ic = None
+ Pose2Rx = Pose3D #Pose3D.getPose3DData()
+ try:
+ ic = Ice.initialize(sys.argv)
+ adapter = ic.createObjectAdapterWithEndpoints("Pose3DAdapter", "default -p 9994")
+ object = Pose2Rx
+ #print object.getPose3DData()
+ adapter.add(object, ic.stringToIdentity("Pose3D"))
+ adapter.activate()
+ ic.waitForShutdown()
+ except:
+ traceback.print_exc()
+ status = 1
+
+ if ic:
+ # Clean up
+ try:
+ ic.destroy()
+ except:
+ traceback.print_exc()
+ status = 1
+
+ sys.exit(status)
+
def openCMDVelChannel(CMDVel):
status = 0
ic = None
CMDVel2Rx = CMDVel #CMDVel.getCMDVelData()
try:
- ic = EasyIce.initialize(sys.argv)
- adapter = ic.createObjectAdapterWithEndpoints("CMDVelAdapter", "default -p 9999")
+ ic = Ice.initialize(sys.argv)
+ adapter = ic.createObjectAdapterWithEndpoints("CMDVelAdapter", "default -p 9997")
object = CMDVel2Rx
- print (CMDVel2Rx)
+ print(object)
adapter.add(object, ic.stringToIdentity("CMDVel"))
adapter.activate()
ic.waitForShutdown()
@@ -957,25 +1001,16 @@ def openCMDVelChannel(CMDVel):
sys.exit(status)
-class NavdataI(jderobot.Navdata):
- def __init__(self):
- pass
-
- def getNavdata(self, current=None):
- data = jderobot.NavdataData()
- return data
-
-def openNavdataChannel():
+def openExtraChannel(Extra):
status = 0
ic = None
- Navdata2Tx = NavdataI()
-
+ Extra2Tx = Extra
try:
- ic = EasyIce.initialize(sys.argv)
- adapter = ic.createObjectAdapterWithEndpoints("NavdataAdapter", "default -p 9001")
- object = Navdata2Tx
- adapter.add(object, ic.stringToIdentity("Navdata"))
+ ic = Ice.initialize(sys.argv)
+ adapter = ic.createObjectAdapterWithEndpoints("ExtraAdapter", "default -p 9995")
+ object = Extra2Tx
+ adapter.add(object, ic.stringToIdentity("Extra"))
adapter.activate()
ic.waitForShutdown()
except:
@@ -992,19 +1027,25 @@ def openNavdataChannel():
sys.exit(status)
-class ExtraI(jderobot.ArDroneExtra):
- pass
+class NavdataI(jderobot.Navdata):
+ def __init__(self):
+ pass
+
+ def getNavdata(self, current=None):
+ data = jderobot.NavdataData()
+ return data
-def openExtraChannel():
+def openNavdataChannel():
status = 0
ic = None
- Extra2Tx = ExtraI()
+ Navdata2Tx = NavdataI()
+
try:
- ic = EasyIce.initialize(sys.argv)
- adapter = ic.createObjectAdapterWithEndpoints("ExtraAdapter", "default -p 9002")
- object = Extra2Tx
- adapter.add(object, ic.stringToIdentity("Extra"))
+ ic = Ice.initialize(sys.argv)
+ adapter = ic.createObjectAdapterWithEndpoints("NavdataAdapter", "default -p 9996")
+ object = Navdata2Tx
+ adapter.add(object, ic.stringToIdentity("Navdata"))
adapter.activate()
ic.waitForShutdown()
except:
@@ -1021,59 +1062,217 @@ def openExtraChannel():
sys.exit(status)
-def sendCMDVel2Vehicle(CMDVel):
-
+def sendCMDVel2Vehicle(CMDVel,Pose3D):
while True:
- time.sleep(1) #1Hz
-
CMDVel2send = CMDVel.getCMDVelData()
+ Pose3D2send = Pose3D.getPose3DData()
+ print(Pose3D2send)
+ NEDvel = body2NED(CMDVel2send, Pose3D2send) # [x,y,z]
+ linearXstring = str(NEDvel[0])
+ linearYstring = str(NEDvel[1])
+ linearZstring = str(NEDvel[2])
+ angularZstring = str(CMDVel.angularZ*180/math.pi)
+ velocitystring = 'velocity '+ linearXstring + ' ' + linearYstring + ' ' + linearZstring
+ angularString = 'setyaw ' + angularZstring + ' 1 0'
+ process_stdin(velocitystring) # SET_POSITION_TARGET_LOCAL_NED
+ #process_stdin(angularString)
- linearXstring = str(0.0)#CMDVel2send.linearX*10)
- linearYstring = str(0.0)#CMDVel2send.linearY*10)
- linearZstring = str(-0.2)#CMDVel2send.linearZ*10)
+def sendWayPoint2Vehicle(Pose3D):
- velocitystring = 'velocity '+ linearXstring + ' ' + linearYstring + ' ' + linearZstring
+ while True:
+ time.sleep(1)
+ wayPointPoseXYZ = Pose3D.getPose3DData()
+ wayPointXYZ = {}
+ wayPointXYZ['x'] = wayPointPoseXYZ.x
+ wayPointXYZ['y'] = wayPointPoseXYZ.y
+ wayPointXYZ['z'] = wayPointPoseXYZ.z
+ wayPointLatLonHei = cartesian2global(wayPointXYZ)
- # print velocitystring
+ latittude = str(wayPointLatLonHei['lat'])
+ longitude = str(wayPointLatLonHei['lon'])
+ altittude = str(int(wayPointLatLonHei['hei']))
- print ('CMDVel')
- process_stdin(velocitystring) # SET_POSITION_TARGET_LOCAL_NED
+ WPstring = 'guided ' + latittude + ' ' + longitude + ' ' + altittude
+ process_stdin(WPstring)
+
+ #print wayPoint
+
+def landDecision(PH_Extra):
-def spherical2cartesian(lat, lon, alt):
+ global operation_takeoff
+ global time_init_operation_takeoff
+ global time_end_operation_takeoff
+ while True:
+ if PH_Extra.landDecision:
+ print("Landing")
+ process_stdin("land")
+ PH_Extra.setLand(False)
+ if PH_Extra.takeOffDecision:
+ print("Takeoff")
+ operation_takeoff=True
+ print(time_end_operation_takeoff)
+ time_init_operation_takeoff = int(round(time.time() * 1000))
+ time_end_operation_takeoff = time_init_operation_takeoff + 5000
+ print("Arming proppellers")
+ mpstate.input_queue.put("arm throttle")
+ PH_Extra.setTakeOff(False)
+
+def global2cartesian(poseLatLonHei):
wgs84_radius = 6378137 #meters
wgs84_flattening = 1 - 1 / 298.257223563
+ eartPerim = wgs84_radius * 2 * math.pi
- radius = wgs84_radius + alt;
- x = radius * math.cos(lat) * math.cos(lon)
- y = radius * math.cos(lat) * math.sin(lon)
- z = radius * math.sin(lat) * wgs84_flattening
+ earthRadiusLon = wgs84_radius * math.cos(poseLatLonHei['lat'])/wgs84_flattening
+ eartPerimLon = earthRadiusLon * 2 * math.pi
- xyz = [x,y,z]
+ poseXYZ = {}
+ poseXYZ['x'] = poseLatLonHei['lon'] * eartPerimLon / (2*math.pi)
+ poseXYZ['y'] = poseLatLonHei['lat'] * eartPerim / (2*math.pi)
+ poseXYZ['z'] = poseLatLonHei['hei']
- return xyz
+ return poseXYZ
-def local2NED(bocyvel, att):
+def cartesian2global(poseXYZ):
- roll = att.roll
- pitch = att.pitch
- yaw = att.roll
+ wgs84_radius = 6378137 # meters
+ wgs84_flattening = 1 - 1 / 298.257223563
+ eartPerim = wgs84_radius * 2 * math.pi
+ referenceLat = 40.1912 ##################### Suposed to be Vehicle lattitude
- bvx = bocyvel.x
- bvy = bocyvel.y
- bvz = bocyvel.z
+ radLat = math.radians(referenceLat)
+ earthRadiusLon = wgs84_radius * math.cos(radLat)/wgs84_flattening
+ eartPerimLon = earthRadiusLon * 2 * math.pi
- NEDvel = {}
+ poseLatLonHei = {}
+ poseLatLonHei['lat'] = poseXYZ['y'] * 360 / eartPerim
+ poseLatLonHei['lon'] = poseXYZ['x'] * 360 / eartPerimLon
+ poseLatLonHei['hei'] = poseXYZ['z']
- NEDvel.x = bvx * math.cos(pitch)*math.cos(yaw) + bvy * (math.sin(roll)*math.sin(pitch)*math.cos(yaw) - math.cos(roll)*math.sin(yaw)) + bvz * (math.cos(roll)*math.sin(pitch)*math.cos(yaw) + math.sin(roll)*math.sin(yaw))
- NEDvel.y = bvx * math.cos(pitch)*math.sin(yaw) + bvy * (math.sin(roll)*math.sin(pitch)*math.sin(yaw) + math.cos(roll)*math.cos(yaw)) + bvz * (math.cos(roll)*math.sin(pitch)*math.sin(yaw) - math.sin(roll)*math.cos(yaw))
- NEDvel.z = -bvx * math.sin(pitch) + bvy * (math.sin(roll)*math.cos(pitch)) + bvz * (math.cos(roll)*math.cos(pitch))
+ return poseLatLonHei
- return NEDvel
+def body2NED(CMDVel, Pose3D):
-#####################################################################
+ q1 = [0, CMDVel.linearX, CMDVel.linearY, CMDVel.linearZ]
+ q2 = [Pose3D.q0, Pose3D.q1, Pose3D.q2, Pose3D.q3]
+
+ q1 = qNormal(q1)
+ q2 = qNormal(q2)
+
+ #rotation = q2*q1*q2'
+
+ q2inverse = qInverse(q2)
+ qtempotal = qMultiply(q1,q2inverse)
+ q = qMultiply(q2,qtempotal)
+
+ rotatedVector = q[1:len(q)] #obtain [q1,q2,q3]
+
+ return rotatedVector
+
+ #q0 = Pose3D.q0
+ #q1 = Pose3D.q1
+ #q2 = Pose3D.q2
+ #q3 = Pose3D.q3
+
+ # obtain eulers from quaternion TO BE IMPROVED!!!!!!!!!!!
+
+ #roll = 1/ math.tan((2*(q1*q2+q0*q3))/(q3*q3+q2*q2-q1*q1-q0*q0))
+ #pitch = 1/math.sin(-2*(q0*q2-q1*q3))
+ #yaw = 1/ math.tan((2*(q0*q1+q3*q2))/(q3*q3-q2*q2-q1*q1+q0*q0))
+
+ # Body velocity (x,y,z)
+
+ #bvx = CMDVel.linearX
+ #bvy = CMDVel.linearY
+ #bvz = CMDVel.linearZ
+
+ #NEDvel = [0,0,0] #[x,y,z]
+
+ #NEDvel[0] = bvx * math.cos(pitch)*math.cos(yaw) + bvy * (math.sin(roll)*math.sin(pitch)*math.cos(yaw) - math.cos(roll)*math.sin(yaw)) + bvz * (math.cos(roll)*math.sin(pitch)*math.cos(yaw) + math.sin(roll)*math.sin(yaw))
+ #NEDvel[1] = bvx * math.cos(pitch)*math.sin(yaw) + bvy * (math.sin(roll)*math.sin(pitch)*math.sin(yaw) + math.cos(roll)*math.cos(yaw)) + bvz * (math.cos(roll)*math.sin(pitch)*math.sin(yaw) - math.sin(roll)*math.cos(yaw))
+ #NEDvel[2] = -bvx * math.sin(pitch) + bvy * (math.sin(roll)*math.cos(pitch)) + bvz * (math.cos(roll)*math.cos(pitch))
+
+ #NEDvel[0]=bvx
+ #NEDvel[1]=bvy
+ #NEDvel[2]=bvz
+
+ #return NEDvel
+
+def qMultiply (q1,q2):
+
+ q1 = qNormal(q1)
+ q2 = qNormal(q2)
+
+ # quaternion1
+ w1 = q1[0]
+ x1 = q1[1]
+ y1 = q1[2]
+ z1 = q1[3]
+
+ #quaternion2
+ w2 = q2[0]
+ x2 = q2[1]
+ y2 = q2[2]
+ z2 = q2[3]
+
+ w = w1*w2 - x1*x2 - y1*y2 - z1*z2
+ x = w1*x2 + x1*w2 + y1*z2 - z1*y2
+ y = w1*y2 + y1*w2 + z1*x2 - x1*z2
+ z = w1*z2 + z1*w2 + x1*y2 - y1*x2
+
+ q = [w,x,y,z]
+
+ q = qNormal(q)
+ return q
+
+def qNormal(q1):
+
+ qmodule = math.sqrt(q1[0]*q1[0] + q1[1]*q1[1] + q1[2]*q1[2] + q1[3]*q1[3])
+ q = [0,0,0,0]
+
+ if (qmodule == 0):
+ qmodule = 0.000000000001
+
+ q[0] = q1[0] / qmodule
+ q[1] = q1[1] / qmodule
+ q[2] = q1[2] / qmodule
+ q[3] = q1[3] / qmodule
+
+ return q
+
+def qConjugate(q1):
+
+ q1 = qNormal(q1)
+ q = [0,0,0,0]
+ q[0] = q1[0]
+ q[1] = -q1[1]
+ q[2] = -q1[2]
+ q[3] = -q1[3]
+
+ q = qNormal(q)
+ return q
+
+def qInverse(q1):
+
+ q1 = qNormal(q1)
+ qconjugate = qConjugate(q1)
+ qmodule = math.sqrt(q1[0] * q1[0] + q1[1] * q1[1] + q1[2] * q1[2] + q1[3] * q1[3])
+
+ if (qmodule == 0):
+ qmodule = 0.000000000001
+
+ q = [0,0,0,0]
+ q[0] = qconjugate[0] / qmodule
+ q[1] = qconjugate[1] / qmodule
+ q[2] = qconjugate[2] / qmodule
+ q[3] = qconjugate[3] / qmodule
+
+ q = qNormal(q)
+ return q
+
+#####################################################################
if __name__ == '__main__':
from optparse import OptionParser
@@ -1082,6 +1281,8 @@ def local2NED(bocyvel, att):
parser.add_option("--master", dest="master", action='append',
metavar="DEVICE[,BAUD]", help="MAVLink master port and optional baud rate",
default=[])
+ parser.add_option("--udp", dest="udp", action='append', help="run udp server")
+ parser.add_option("--tcp", dest="tcp", action='append', help="run tcp server")
parser.add_option("--out", dest="output", action='append',
metavar="DEVICE[,BAUD]", help="MAVLink output port and optional baud rate",
default=[])
@@ -1122,7 +1323,6 @@ def local2NED(bocyvel, att):
default=[],
help='Load the specified module. Can be used multiple times, or with a comma separated list')
parser.add_option("--mav09", action='store_true', default=False, help="Use MAVLink protocol 0.9")
- parser.add_option("--mav20", action='store_true', default=False, help="Use MAVLink protocol 2.0")
parser.add_option("--auto-protocol", action='store_true', default=False, help="Auto detect MAVLink protocol version")
parser.add_option("--nowait", action='store_true', default=False, help="don't wait for HEARTBEAT on startup")
parser.add_option("-c", "--continue", dest='continue_mode', action='store_true', default=False, help="continue logs")
@@ -1134,7 +1334,7 @@ def local2NED(bocyvel, att):
parser.add_option("--profile", action='store_true', help="run the Yappi python profiler")
parser.add_option("--state-basedir", default=None, help="base directory for logs and aircraft directories")
parser.add_option("--version", action='store_true', help="version information")
- parser.add_option("--default-modules", default="log,signing,wp,rally,fence,param,relay,tuneopt,arm,mode,calibration,rc,auxopt,misc,cmdlong,battery,terrain,output,adsb", help='default module list')
+ parser.add_option("--default-modules", default="log,wp,rally,fence,param,relay,tuneopt,arm,mode,calibration,rc,auxopt,misc,cmdlong,battery,terrain,output", help='default module list')
(opts, args) = parser.parse_args()
@@ -1144,8 +1344,6 @@ def local2NED(bocyvel, att):
if opts.mav09:
os.environ['MAVLINK09'] = '1'
- if opts.mav20:
- os.environ['MAVLINK20'] = '1'
from pymavlink import mavutil, mavparm
mavutil.set_dialect(opts.dialect)
@@ -1153,10 +1351,10 @@ def local2NED(bocyvel, att):
if opts.version:
import pkg_resources
version = pkg_resources.require("mavproxy")[0].version
- print ("MAVProxy is a modular ground station using the mavlink protocol")
- print ("MAVProxy Version: " + version)
+ print("MAVProxy is a modular ground station using the mavlink protocol")
+ print("MAVProxy Version: " + version)
sys.exit(1)
-
+
# global mavproxy state
mpstate = MPState()
mpstate.status.exit = False
@@ -1166,6 +1364,13 @@ def local2NED(bocyvel, att):
mpstate.logqueue = Queue.Queue()
mpstate.logqueue_raw = Queue.Queue()
+ if opts.udp:
+ mpstate.udp.connect(opts.udp[0].split(":")[0], int(opts.udp[0].split(":")[1]))
+ print("Connected (UDP) to " + mpstate.udp.address + ":" + str(mpstate.udp.port))
+
+ if opts.tcp:
+ mpstate.tcp.connect(opts.tcp[0].split(":")[0], int(opts.tcp[0].split(":")[1]))
+ print("Client (TCP) connected at " + mpstate.tcp.client[0] + ":" + str(mpstate.tcp.port))
if opts.speech:
# start the speech-dispatcher early, so it doesn't inherit any ports from
@@ -1187,9 +1392,9 @@ def local2NED(bocyvel, att):
mpstate.rl = rline.rline("MAV> ", mpstate)
def quit_handler(signum = None, frame = None):
- #print ('Signal handler called with signal', signum)
+ #print 'Signal handler called with signal', signum
if mpstate.status.exit:
- print ('Clean shutdown impossible, forcing an exit')
+ print('Clean shutdown impossible, forcing an exit')
sys.exit(0)
else:
mpstate.status.exit = True
@@ -1297,17 +1502,26 @@ def quit_handler(signum = None, frame = None):
# log all packets from the master, for later replay
open_telemetry_logs(logpath_telem, logpath_telem_raw)
-
-
########################## Jorge Cano CODE ##########################
- PH_Pose3D = Pose3DI(0,0,0,0,0,0,0,0)
- PH_CMDVel = CMDVelI(0,0,0,0,0,0)
+ PH_Pose3D = Pose3DI(0,0,0,0,0,0,0,0) #1 to avoid indeterminations
+ PH_CMDVel = CMDVelI(0,0,0,0,0,0) #1 to avoid indeterminations
+ PH_Extra = ExtraI()
+ WP_Pose3D = Pose3DI(0,0,0,0,0,0,0,0)
#####################################################################
-
+ global operation_takeoff
+ global on_air
+ global time_init_operation_takeoff
+ global time_end_operation_takeoff
+
+ operation_takeoff = False
+ on_air = False
+ time_init_operation_takeoff = 10000000000000000000
+ time_end_operation_takeoff = 10000000000000000000
+ print("Variables a false")
# run main loop as a thread
- mpstate.status.thread = threading.Thread(target=main_loop, name='main_loop')
+ mpstate.status.thread = threading.Thread(target=listener_loop, name='listener_loop')
mpstate.status.thread.daemon = True
mpstate.status.thread.start()
@@ -1325,30 +1539,49 @@ def quit_handler(signum = None, frame = None):
CMDVelTheading.daemon = True
CMDVelTheading.start()
- # Open an ICE channel empty
+ # Open an ICE TX communication and leave it open in a parallel threat
- CMDVelTheading = threading.Thread(target=openNavdataChannel, args=(), name='Navdata_Theading')
+ CMDVelTheading = threading.Thread(target=openExtraChannel, args=(PH_Extra,), name='Extra_Theading')
CMDVelTheading.daemon = True
CMDVelTheading.start()
# Open an ICE channel empty
- CMDVelTheading = threading.Thread(target=openExtraChannel, args=(), name='Extra_Theading')
+ CMDVelTheading = threading.Thread(target=openNavdataChannel, args=(), name='Navdata_Theading')
CMDVelTheading.daemon = True
CMDVelTheading.start()
+ # # Open an MAVLink TX communication and leave it open in a parallel threat
+ #
+ PoseTheading = threading.Thread(target=sendCMDVel2Vehicle, args=(PH_CMDVel,PH_Pose3D,), name='TxCMDVel_Theading')
+ PoseTheading.daemon = True
+ PoseTheading.start()
+
+
+ # Open an ICE TX communication and leave it open in a parallel threat
+
+ PoseTheading = threading.Thread(target=openPose3DChannelWP, args=(WP_Pose3D,), name='WayPoint_Theading')
+ PoseTheading.daemon = True
+ PoseTheading.start()
+
# Open an MAVLink TX communication and leave it open in a parallel threat
- PoseTheading = threading.Thread(target=sendCMDVel2Vehicle, args=(PH_CMDVel,), name='TxCMDVel_Theading')
+ PoseTheading = threading.Thread(target=sendWayPoint2Vehicle, args=(WP_Pose3D,), name='WayPoint2Vehicle_Theading')
PoseTheading.daemon = True
PoseTheading.start()
+ # Open an MAVLink TX communication and leave it open in a parallel threat
+
+ PoseTheading = threading.Thread(target=landDecision, args=(PH_Extra,), name='LandDecision2Vehicle_Theading')
+ PoseTheading.daemon = True
+ PoseTheading.start()
- # while True:
- # print (PH_Pose3D.getPose3DData())
- # while True:
- # process_stdin('velocity 1 1 1') #SET_POSITION_TARGET_LOCAL_NED
+
+ #while True:
+ # time.sleep(1)
+ # Posejarl = PH_Pose3D.getPose3DData()
+ # print (Posejarl)
#####################################################################
@@ -1388,5 +1621,5 @@ def quit_handler(signum = None, frame = None):
if hasattr(m, 'unload'):
print("Unloading module %s" % m.name)
m.unload()
-
+
sys.exit(1)
diff --git a/src/drivers/MAVLinkServer/modules/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/__init__.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/__init__.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/ANUGA/README.txt b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/README.txt
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/ANUGA/README.txt
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/README.txt
diff --git a/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/drivers/MAVLinkServer/modules/lib/ANUGA/geo_reference.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/geo_reference.py
similarity index 92%
rename from src/drivers/MAVLinkServer/modules/lib/ANUGA/geo_reference.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/geo_reference.py
index 67075df9a..7d75f49d7 100644
--- a/src/drivers/MAVLinkServer/modules/lib/ANUGA/geo_reference.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/geo_reference.py
@@ -90,16 +90,16 @@ def __init__(self,
self.units = units
self.xllcorner = float(xllcorner)
self.yllcorner = float(yllcorner)
-
+
if NetCDFObject is not None:
self.read_NetCDF(NetCDFObject)
if ASCIIFile is not None:
self.read_ASCII(ASCIIFile, read_title=read_title)
-
- # Set flag for absolute points (used by get_absolute)
+
+ # Set flag for absolute points (used by get_absolute)
self.absolute = num.allclose([self.xllcorner, self.yllcorner], 0)
-
+
def get_xllcorner(self):
return self.xllcorner
@@ -196,13 +196,13 @@ def read_ASCII(self, fd, read_title=None):
if read_title[0:2].upper() != TITLE[0:2].upper():
msg = ('File error. Expecting line: %s. Got this line: %s'
% (TITLE, read_title))
- raise TitleError, msg
+ raise TitleError(msg)
self.zone = int(fd.readline())
self.xllcorner = float(fd.readline())
self.yllcorner = float(fd.readline())
except SyntaxError:
msg = 'File error. Got syntax error while parsing geo reference'
- raise ParsingError, msg
+ raise ParsingError(msg)
# Fix some assertion failures
if isinstance(self.zone, num.ndarray) and self.zone.shape == ():
@@ -232,13 +232,13 @@ def change_points_geo_ref(self, points, points_geo_ref=None):
If the points do not have a geo ref, assume 'absolute' values
"""
import copy
-
+
# remember if we got a list
is_list = isinstance(points, list)
points = ensure_numeric(points, num.float)
- # sanity checks
+ # sanity checks
if len(points.shape) == 1:
#One point has been passed
msg = 'Single point must have two elements'
@@ -250,33 +250,33 @@ def change_points_geo_ref(self, points, points_geo_ref=None):
assert len(points.shape) == 2, msg
msg = 'Input must be an N x 2 array or list of (x,y) values. '
- msg += 'I got an %d x %d array' %points.shape
- assert points.shape[1] == 2, msg
+ msg += 'I got an %d x %d array' %points.shape
+ assert points.shape[1] == 2, msg
- # FIXME (Ole): Could also check if zone, xllcorner, yllcorner
- # are identical in the two geo refs.
+ # FIXME (Ole): Could also check if zone, xllcorner, yllcorner
+ # are identical in the two geo refs.
if points_geo_ref is not self:
# If georeferences are different
- points = copy.copy(points) # Don't destroy input
+ points = copy.copy(points) # Don't destroy input
if not points_geo_ref is None:
# Convert points to absolute coordinates
- points[:,0] += points_geo_ref.xllcorner
- points[:,1] += points_geo_ref.yllcorner
-
+ points[:,0] += points_geo_ref.xllcorner
+ points[:,1] += points_geo_ref.yllcorner
+
# Make points relative to primary geo reference
- points[:,0] -= self.xllcorner
+ points[:,0] -= self.xllcorner
points[:,1] -= self.yllcorner
if is_list:
points = points.tolist()
-
+
return points
def is_absolute(self):
"""Return True if xllcorner==yllcorner==0 indicating that points
in question are absolute.
"""
-
+
# FIXME(Ole): It is unfortunate that decision about whether points
# are absolute or not lies with the georeference object. Ross pointed this out.
# Moreover, this little function is responsible for a large fraction of the time
@@ -284,12 +284,12 @@ def is_absolute(self):
# This was due to the repeated calls to allclose.
# With the flag method fitting is much faster (18 Mar 2009).
- # FIXME(Ole): HACK to be able to reuse data already cached (18 Mar 2009).
+ # FIXME(Ole): HACK to be able to reuse data already cached (18 Mar 2009).
# Remove at some point
if not hasattr(self, 'absolute'):
self.absolute = num.allclose([self.xllcorner, self.yllcorner], 0)
-
- # Return absolute flag
+
+ # Return absolute flag
return self.absolute
def get_absolute(self, points):
@@ -305,25 +305,25 @@ def get_absolute(self, points):
# One point has been passed
msg = 'Single point must have two elements'
if not len(points) == 2:
- raise ShapeError, msg
+ raise ShapeError(msg)
msg = 'Input must be an N x 2 array or list of (x,y) values. '
- msg += 'I got an %d x %d array' %points.shape
+ msg += 'I got an %d x %d array' %points.shape
if not points.shape[1] == 2:
- raise ShapeError, msg
-
-
+ raise ShapeError(msg)
+
+
# Add geo ref to points
if not self.is_absolute():
- points = copy.copy(points) # Don't destroy input
- points[:,0] += self.xllcorner
+ points = copy.copy(points) # Don't destroy input
+ points[:,0] += self.xllcorner
points[:,1] += self.yllcorner
-
+
if is_list:
points = points.tolist()
-
+
return points
##
@@ -346,22 +346,22 @@ def get_relative(self, points):
#One point has been passed
msg = 'Single point must have two elements'
if not len(points) == 2:
- raise ShapeError, msg
+ raise ShapeError(msg)
if not points.shape[1] == 2:
msg = ('Input must be an N x 2 array or list of (x,y) values. '
'I got an %d x %d array' % points.shape)
- raise ShapeError, msg
+ raise ShapeError(msg)
# Subtract geo ref from points
if not self.is_absolute():
- points = copy.copy(points) # Don't destroy input
- points[:,0] -= self.xllcorner
+ points = copy.copy(points) # Don't destroy input
+ points[:,0] -= self.xllcorner
points[:,1] -= self.yllcorner
if is_list:
points = points.tolist()
-
+
return points
##
@@ -382,7 +382,7 @@ def reconcile_zones(self, other):
msg = ('Geospatial data must be in the same '
'ZONE to allow reconciliation. I got zone %d and %d'
% (self.zone, other.zone))
- raise ANUGAError, msg
+ raise ANUGAError(msg)
#def easting_northing2geo_reffed_point(self, x, y):
# return [x-self.xllcorner, y - self.xllcorner]
diff --git a/src/drivers/MAVLinkServer/modules/lib/ANUGA/lat_long_UTM_conversion.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/lat_long_UTM_conversion.py
similarity index 88%
rename from src/drivers/MAVLinkServer/modules/lib/ANUGA/lat_long_UTM_conversion.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/lat_long_UTM_conversion.py
index d29225570..1e2b59fe4 100644
--- a/src/drivers/MAVLinkServer/modules/lib/ANUGA/lat_long_UTM_conversion.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/lat_long_UTM_conversion.py
@@ -126,7 +126,7 @@ def LLtoUTM( Lat, Long, ReferenceEllipsoid=23):
UTMNorthing = UTMNorthing + 10000000.0; #10000000 meter offset for southern hemisphere
#UTMZone was originally returned here. I don't know what the
#letter at the end was for.
- #print ("UTMZone", UTMZone )
+ #print "UTMZone", UTMZone
return (ZoneNumber, UTMEasting, UTMNorthing)
@@ -175,30 +175,30 @@ def UTMtoLL(northing, easting, zone, isSouthernHemisphere=True,
Using
http://www.ga.gov.au/geodesy/datums/redfearn_geo_to_grid.jsp
- Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
-Zone: 36
-Easting: 511669.521 Northing: 19328195.112
-Latitude: 84 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
+ Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
+Zone: 36
+Easting: 511669.521 Northing: 19328195.112
+Latitude: 84 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
Grid Convergence: 0 -59 ' 40.28 '' Point Scale: 0.99960166
____________
-Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
-Zone: 36
-Easting: 519384.803 Northing: 1118247.585
-Latitude: -80 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
-Grid Convergence: 0 59 ' 5.32 '' Point Scale: 0.99960459
+Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
+Zone: 36
+Easting: 519384.803 Northing: 1118247.585
+Latitude: -80 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
+Grid Convergence: 0 59 ' 5.32 '' Point Scale: 0.99960459
___________
-Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
-Zone: 36
-Easting: 611263.812 Northing: 10110547.106
-Latitude: 1 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
-Grid Convergence: 0 -1 ' 2.84 '' Point Scale: 0.99975325
+Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
+Zone: 36
+Easting: 611263.812 Northing: 10110547.106
+Latitude: 1 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
+Grid Convergence: 0 -1 ' 2.84 '' Point Scale: 0.99975325
______________
-Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
-Zone: 36
-Easting: 611263.812 Northing: 9889452.894
-Latitude: -1 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
-Grid Convergence: 0 1 ' 2.84 '' Point Scale: 0.99975325
+Site Name: GDA-MGA: (UTM with GRS80 ellipsoid)
+Zone: 36
+Easting: 611263.812 Northing: 9889452.894
+Latitude: -1 0 ' 0.00000 '' Longitude: 34 0 ' 0.00000 ''
+Grid Convergence: 0 1 ' 2.84 '' Point Scale: 0.99975325
So this uses a false northing of 10000000 in the both hemispheres.
ArcGIS used a false northing of 0 in the northern hem though.
diff --git a/src/drivers/MAVLinkServer/modules/lib/ANUGA/redfearn.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/redfearn.py
similarity index 91%
rename from src/drivers/MAVLinkServer/modules/lib/ANUGA/redfearn.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/redfearn.py
index 2cd051f32..a25632f43 100644
--- a/src/drivers/MAVLinkServer/modules/lib/ANUGA/redfearn.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/ANUGA/redfearn.py
@@ -17,15 +17,15 @@
def degminsec2decimal_degrees(dd,mm,ss):
assert abs(mm) == mm
- assert abs(ss) == ss
+ assert abs(ss) == ss
if dd < 0:
sign = -1
else:
sign = 1
-
- return sign * (abs(dd) + mm/60. + ss/3600.)
-
+
+ return sign * (abs(dd) + mm/60. + ss/3600.)
+
def decimal_degrees2degminsec(dec):
if dec < 0:
@@ -33,13 +33,13 @@ def decimal_degrees2degminsec(dec):
else:
sign = 1
- dec = abs(dec)
+ dec = abs(dec)
dd = int(dec)
f = dec-dd
mm = int(f*60)
ss = (f*60-mm)*60
-
+
return sign*dd, mm, ss
def redfearn(lat, lon, false_easting=None, false_northing=None,
@@ -62,20 +62,20 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
from math import pi, sqrt, sin, cos, tan
-
+
#GDA Specifications
a = 6378137.0 #Semi major axis
inverse_flattening = 298.257222101 #1/f
if scale_factor is None:
- K0 = 0.9996 #Central scale factor
+ K0 = 0.9996 #Central scale factor
else:
K0 = scale_factor
- #print ('scale', K0)
+ #print 'scale', K0
zone_width = 6 #Degrees
- longitude_of_central_meridian_zone0 = -183
+ longitude_of_central_meridian_zone0 = -183
longitude_of_western_edge_zone0 = -186
if false_easting is None:
@@ -86,8 +86,8 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
false_northing = 10000000 #Southern hemisphere
else:
false_northing = 0 #Northern hemisphere)
-
-
+
+
#Derived constants
f = 1.0/inverse_flattening
b = a*(1-f) #Semi minor axis
@@ -110,7 +110,7 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
phi = lat*pi/180 #Convert latitude to radians
- sinphi = sin(phi)
+ sinphi = sin(phi)
sin2phi = sin(2*phi)
sin4phi = sin(4*phi)
sin6phi = sin(6*phi)
@@ -119,16 +119,16 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
cosphi2 = cosphi*cosphi
cosphi3 = cosphi*cosphi2
cosphi4 = cosphi2*cosphi2
- cosphi5 = cosphi*cosphi4
+ cosphi5 = cosphi*cosphi4
cosphi6 = cosphi2*cosphi4
cosphi7 = cosphi*cosphi6
- cosphi8 = cosphi4*cosphi4
+ cosphi8 = cosphi4*cosphi4
t = tan(phi)
t2 = t*t
t4 = t2*t2
t6 = t2*t4
-
+
#Radius of Curvature
rho = a*(1-e2)/(1-e2*sinphi*sinphi)**1.5
nu = a/(1-e2*sinphi*sinphi)**0.5
@@ -145,7 +145,7 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
A2 = 3.0/8*(e2+e4/4+15*e6/128)
A4 = 15.0/256*(e4+3*e6/4)
A6 = 35*e6/3072
-
+
term1 = a*A0*phi
term2 = -a*A2*sin2phi
term3 = a*A4*sin4phi
@@ -155,8 +155,8 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
if zone is not None and central_meridian is not None:
msg = 'You specified both zone and central_meridian. Provide only one of them'
- raise Exception, msg
-
+ raise Exception(msg)
+
# Zone
if zone is None:
zone = int((lon - longitude_of_western_edge_zone0)/zone_width)
@@ -175,9 +175,9 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
omega6 = omega3*omega3
omega7 = omega*omega6
omega8 = omega4*omega4
-
+
#Northing
- term1 = nu*sinphi*cosphi*omega2/2
+ term1 = nu*sinphi*cosphi*omega2/2
term2 = nu*sinphi*cosphi3*(4*psi2+psi-t2)*omega4/24
term3 = nu*sinphi*cosphi5*\
(8*psi4*(11-24*t2)-28*psi3*(1-6*t2)+\
@@ -191,7 +191,7 @@ def redfearn(lat, lon, false_easting=None, false_northing=None,
term3 = nu*cosphi5*(4*psi3*(1-6*t2)+psi2*(1+8*t2)-2*psi*t2+t4)*omega5/120
term4 = nu*cosphi7*(61-479*t2+179*t4-t6)*omega7/5040
easting = false_easting + K0*(term1 + term2 + term3 + term4)
-
+
return zone, easting, northing
@@ -208,7 +208,7 @@ def convert_from_latlon_to_utm(points=None,
points: list of points given in decimal degrees (latitude, longitude) or
latitudes: list of latitudes and
- longitudes: list of longitudes
+ longitudes: list of longitudes
false_easting (optional)
false_northing (optional)
@@ -221,23 +221,23 @@ def convert_from_latlon_to_utm(points=None,
Notes
Assume the false_easting and false_northing are the same for each list.
- If points end up in different UTM zones, an ANUGAerror is thrown.
+ If points end up in different UTM zones, an ANUGAerror is thrown.
"""
- old_geo = Geo_reference()
+ old_geo = Geo_reference()
utm_points = []
if points == None:
assert len(latitudes) == len(longitudes)
points = map(None, latitudes, longitudes)
-
+
for point in points:
-
+
zone, easting, northing = redfearn(float(point[0]),
float(point[1]),
false_easting=false_easting,
false_northing=false_northing)
new_geo = Geo_reference(zone)
- old_geo.reconcile_zones(new_geo)
+ old_geo.reconcile_zones(new_geo)
utm_points.append([easting, northing])
return utm_points, old_geo.get_zone()
diff --git a/src/drivers/MAVLinkServer/modules/lib/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/__init__.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/__init__.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/dumpstacks.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/dumpstacks.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/dumpstacks.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/dumpstacks.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/graphdefinition.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/graphdefinition.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/graphdefinition.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/graphdefinition.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/grapher.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/grapher.py
similarity index 79%
rename from src/drivers/MAVLinkServer/modules/lib/grapher.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/grapher.py
index e327b3ac3..87e1a4300 100755
--- a/src/drivers/MAVLinkServer/modules/lib/grapher.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/grapher.py
@@ -4,7 +4,6 @@
core library for graphing in mavexplorer
'''
-import ast
import sys, struct, time, os, datetime
import math, re
import matplotlib
@@ -16,25 +15,32 @@
colors = [ 'red', 'green', 'blue', 'orange', 'olive', 'black', 'grey', 'yellow', 'brown', 'darkcyan',
'cornflowerblue', 'darkmagenta', 'deeppink', 'darkred']
-flightmode_colours = [
- (1.0, 0, 0),
- ( 0, 1.0, 0),
- ( 0, 0, 1.0),
-
- ( 0, 1.0, 1.0),
- (1.0, 0, 1.0),
- (1.0, 1.0, 0),
-
- (1.0, 0.5, 0),
- (1.0, 0, 0.5),
- (0.5, 1.0, 0),
- ( 0, 1.0, 0.5),
- (0.5, 0, 1.0),
- ( 0, 0.5, 1.0),
- (1.0, 0.5, 0.5),
- (0.5, 1.0, 0.5),
- (0.5, 0.5, 1.0)
-]
+colourmap = {
+ 'apm' : {
+ 'MANUAL' : (1.0, 0, 0),
+ 'AUTO' : ( 0, 1.0, 0),
+ 'LOITER' : ( 0, 0, 1.0),
+ 'FBWA' : (1.0, 0.5, 0),
+ 'RTL' : ( 1, 0, 0.5),
+ 'STABILIZE' : (0.5, 1.0, 0),
+ 'LAND' : ( 0, 1.0, 0.5),
+ 'STEERING' : (0.5, 0, 1.0),
+ 'HOLD' : ( 0, 0.5, 1.0),
+ 'ALT_HOLD' : (1.0, 0.5, 0.5),
+ 'CIRCLE' : (0.5, 1.0, 0.5),
+ 'POSITION' : (1.0, 0.0, 1.0),
+ 'GUIDED' : (0.5, 0.5, 1.0),
+ 'ACRO' : (1.0, 1.0, 0),
+ 'CRUISE' : ( 0, 1.0, 1.0)
+ },
+ 'px4' : {
+ 'MANUAL' : (1.0, 0, 0),
+ 'SEATBELT' : ( 0.5, 0.5, 0),
+ 'EASY' : ( 0, 1.0, 0),
+ 'AUTO' : ( 0, 0, 1.0),
+ 'UNKNOWN' : ( 1.0, 1.0, 1.0)
+ }
+ }
edge_colour = (0.1, 0.1, 0.1)
@@ -48,16 +54,12 @@ def __init__(self):
self.xaxis = None
self.marker = None
self.linestyle = None
- self.show_flightmode = True
+ self.flightmode = None
self.legend = 'upper left'
self.legend2 = 'upper right'
- self.legend_flightmode = 'lower left'
self.timeshift = 0
self.labels = None
self.multi = False
- self.modes_plotted = {}
- self.flightmode_colour_index = 0
- self.flightmode_colourmap = {}
def add_field(self, field):
'''add another field to plot'''
@@ -91,9 +93,9 @@ def set_legend(self, legend):
'''set graph legend'''
self.legend = legend
- def set_show_flightmode(self, value):
- '''set to true if flightmodes are to be shown'''
- self.show_flightmode = value
+ def set_flightmode(self, flightmode):
+ '''set graph flightmode'''
+ self.flightmode = flightmode
def set_linestyle(self, linestyle):
'''set graph linestyle'''
@@ -120,21 +122,6 @@ def format_coord(x, y):
return ('x=%s Left=%.3f Right=%.3f' % (xstr, y2, y))
return format_coord
- def next_flightmode_colour(self):
- '''allocate a colour to be used for a flight mode'''
- if self.flightmode_colour_index > len(flightmode_colours):
- print("Out of colours; reusing")
- self.flightmode_colour_index = 0
- ret = flightmode_colours[self.flightmode_colour_index]
- self.flightmode_colour_index += 1
- return ret
-
- def flightmode_colour(self, flightmode):
- '''return colour to be used for rendering a flight mode background'''
- if flightmode not in self.flightmode_colourmap:
- self.flightmode_colourmap[flightmode] = self.next_flightmode_colour()
- return self.flightmode_colourmap[flightmode]
-
def plotit(self, x, y, fields, colors=[]):
'''plot a set of graphs using date for x axis'''
pylab.ion()
@@ -217,46 +204,26 @@ def plotit(self, x, y, fields, colors=[]):
linestyle=linestyle, marker=marker, tz=None)
empty = False
- if self.show_flightmode:
- alpha = 0.04
+ if self.flightmode is not None:
for i in range(len(self.modes)-1):
- mode_name = self.modes[i][1]
- c = self.flightmode_colour(mode_name)
- ax1.axvspan(self.modes[i][0], self.modes[i+1][0], fc=c, ec=edge_colour, alpha=alpha)
- self.modes_plotted[self.modes[i][1]] = (c, alpha)
- mode_name = self.modes[-1][1]
- c = self.flightmode_colour(mode_name)
- ax1.axvspan(self.modes[-1][0], ax1.get_xlim()[1], fc=c, ec=edge_colour, alpha=alpha)
- self.modes_plotted[self.modes[-1][1]] = (c, alpha)
+ c = colourmap[self.flightmode].get(self.modes[i][1], edge_colour)
+ ax1.axvspan(self.modes[i][0], self.modes[i+1][0], fc=c, ec=edge_colour, alpha=0.1)
+ c = colourmap[self.flightmode].get(self.modes[-1][1], edge_colour)
+ ax1.axvspan(self.modes[-1][0], ax1.get_xlim()[1], fc=c, ec=edge_colour, alpha=0.1)
+ if ax1_labels != []:
+ ax1.legend(ax1_labels,loc=self.legend)
+ if ax2_labels != []:
+ ax2.legend(ax2_labels,loc=self.legend2)
if empty:
print("No data to graph")
return
- if self.show_flightmode:
- mode_patches = []
- for mode in self.modes_plotted.keys():
- (color, alpha) = self.modes_plotted[mode]
- mode_patches.append(matplotlib.patches.Patch(color=color,
- label=mode, alpha=alpha*5))
- labels = [patch.get_label() for patch in mode_patches]
- if ax1_labels != []:
- patches_legend = matplotlib.pyplot.legend(mode_patches, labels, loc=self.legend_flightmode)
- fig.gca().add_artist(patches_legend)
- else:
- pylab.legend(mode_patches, labels)
-
- if ax1_labels != []:
- ax1.legend(ax1_labels,loc=self.legend)
- if ax2_labels != []:
- ax2.legend(ax2_labels,loc=self.legend2)
-
-
def add_data(self, t, msg, vars, flightmode):
'''add some data'''
mtype = msg.get_type()
- if self.show_flightmode and (len(self.modes) == 0 or self.modes[-1][1] != flightmode):
+ if self.flightmode is not None and (len(self.modes) == 0 or self.modes[-1][1] != flightmode):
self.modes.append((t, flightmode))
for i in range(0, len(self.fields)):
if mtype not in self.field_types[i]:
@@ -370,8 +337,8 @@ def show(self, block=True):
parser.add_argument("--xaxis", default=None, help="X axis expression")
parser.add_argument("--multi", action='store_true', help="multiple files with same colours")
parser.add_argument("--zero-time-base", action='store_true', help="use Z time base for DF logs")
- parser.add_argument("--show-flightmode", default=True,
- help="Add background colour to plot corresponding to current flight mode. Cannot be specified with --xaxis.")
+ parser.add_argument("--flightmode", default=None,
+ help="Choose the plot background according to the active flight mode of the specified type, e.g. --flightmode=apm for ArduPilot or --flightmode=px4 for PX4 stack logs. Cannot be specified with --xaxis.")
parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
parser.add_argument("--output", default=None, help="provide an output format")
parser.add_argument("--timeshift", type=float, default=0, help="shift time on first graph in seconds")
@@ -395,6 +362,6 @@ def show(self, block=True):
mg.set_legend(args.legend)
mg.set_legend2(args.legend2)
mg.set_multi(args.multi)
- mg.set_show_flightmode(args.show_flightmode)
+ mg.set_flightmode(args.flightmode)
mg.process()
mg.show()
diff --git a/src/drivers/MAVLinkServer/modules/lib/live_graph.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/live_graph.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/live_graph.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/live_graph.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/live_graph_ui.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/live_graph_ui.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/live_graph_ui.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/live_graph_ui.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/mavmemlog.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mavmemlog.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/mavmemlog.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mavmemlog.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_checklist.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_checklist.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/lib/mp_checklist.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_checklist.py
index 2a884cf48..76a074e86 100755
--- a/src/drivers/MAVLinkServer/modules/lib/mp_checklist.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_checklist.py
@@ -349,7 +349,7 @@ def on_timer(self, event, notebook):
obj = state.child_pipe.recv()
if isinstance(obj, CheckItem):
#go through each item in the current tab and (un)check as needed
- #print (obj.name + ", " + str(obj.state))
+ #print obj.name + ", " + str(obj.state)
for widget in win.GetChildren():
if type(widget) is wx.CheckBox and widget.GetLabel() == obj.name:
widget.SetValue(obj.state)
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_image.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_image.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/lib/mp_image.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_image.py
index e06c3a905..3088320e3 100755
--- a/src/drivers/MAVLinkServer/modules/lib/mp_image.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_image.py
@@ -311,7 +311,7 @@ def redraw(self):
'''
from guppy import hpy
h = hpy()
- print (h.heap())
+ print h.heap()
'''
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_menu.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_menu.py
similarity index 96%
rename from src/drivers/MAVLinkServer/modules/lib/mp_menu.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_menu.py
index 8dd05d393..59e193566 100644
--- a/src/drivers/MAVLinkServer/modules/lib/mp_menu.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_menu.py
@@ -262,13 +262,9 @@ def call(self):
'save': wx.FD_SAVE,
'overwrite_prompt': wx.FD_OVERWRITE_PROMPT,
}
- flagsMapped = map(lambda x: flag_map[x], self.flags)
-
- #need to OR together the elements of the flagsMapped tuple
- if len(flagsMapped) == 1:
- dlg = wx.FileDialog(None, self.title, '', "", self.wildcard, flagsMapped[0])
- else:
- dlg = wx.FileDialog(None, self.title, '', "", self.wildcard, flagsMapped[0]|flagsMapped[1])
+ flags = map(lambda x: flag_map[x], self.flags)
+
+ dlg = wx.FileDialog(None, self.title, '', "", self.wildcard, flags)
if dlg.ShowModal() != wx.ID_OK:
return None
return dlg.GetPath()
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_module.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_module.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/mp_module.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_module.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_settings.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_settings.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/mp_settings.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_settings.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_util.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_util.py
similarity index 98%
rename from src/drivers/MAVLinkServer/modules/lib/mp_util.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_util.py
index ac03953cf..68820f08b 100644
--- a/src/drivers/MAVLinkServer/modules/lib/mp_util.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_util.py
@@ -12,13 +12,13 @@
if platform.system() == 'Windows':
# auto-detection is failing on windows, for an unknown reason
- has_wxpython = True
+ has_wxpython = True
else:
import imp
try:
imp.find_module('wx')
has_wxpython = True
- except ImportError, e:
+ except ImportError:
pass
radius_of_earth = 6378100.0 # in meters
@@ -220,12 +220,10 @@ def PILTowx(pimg):
wimg.SetData(pimg.convert('RGB').tostring())
return wimg
-def dot_mavproxy(name=None):
+def dot_mavproxy(name):
'''return a path to store mavproxy data'''
dir = os.path.join(os.environ['HOME'], '.mavproxy')
mkdir_p(dir)
- if name is None:
- return dir
return os.path.join(dir, name)
def download_url(url):
@@ -271,7 +269,7 @@ def child_fd_list_add(fd):
'''add a file descriptor to list to be closed in child processes'''
global child_fd_list
child_fd_list.append(fd)
-
+
def child_fd_list_remove(fd):
'''remove a file descriptor to list to be closed in child processes'''
global child_fd_list
diff --git a/src/drivers/MAVLinkServer/modules/lib/mp_widgets.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_widgets.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/mp_widgets.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/mp_widgets.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/multiprocessing_queue.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/multiprocessing_queue.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/multiprocessing_queue.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/multiprocessing_queue.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/optparse_gui/README.txt b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/optparse_gui/README.txt
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/optparse_gui/README.txt
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/optparse_gui/README.txt
diff --git a/src/drivers/MAVLinkServer/modules/lib/optparse_gui/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/optparse_gui/__init__.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/lib/optparse_gui/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/optparse_gui/__init__.py
index 45768d01c..16c732c58 100644
--- a/src/drivers/MAVLinkServer/modules/lib/optparse_gui/__init__.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/optparse_gui/__init__.py
@@ -158,7 +158,7 @@ def OnSelectPath(self, event):
message = 'Select directory for %s' % (option.dest),
defaultPath = path)
else:
- raise NotImplementedError(`option.type`)
+ raise NotImplementedError('option.type')
dlg_result = dlg.ShowModal()
if wx.ID_OK != dlg_result:
return
diff --git a/src/drivers/MAVLinkServer/modules/lib/rline.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/rline.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/rline.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/rline.py
diff --git a/src/drivers/MAVLinkServer/MAVProxy/modules/lib/tcp.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/tcp.py
new file mode 100644
index 000000000..caa1d70c0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/tcp.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+"""
+ MAVProxy TCP server
+"""
+import sys, socket
+
+class TcpServer():
+ '''
+ a tcp server for MAVProxy
+ '''
+ def __init__(self):
+ self.client = None
+ self.socket = None
+ self.conn = None
+ pass
+
+ def connect(self, address, port):
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.socket.bind((address, port))
+ self.address = address
+ self.port = port
+ self.socket.listen(1)
+ self.conn, self.client = self.socket.accept()
+
+ def readln(self):
+ data = self.conn.recv(1024)
+ return data
+
+ def writeln(self, data):
+ return self.conn.send(data)
+
+ def connected(self):
+ return self.conn is not None
+
+
+if __name__ == "__main__":
+ # Test for TCP server
+ pass
diff --git a/src/drivers/MAVLinkServer/modules/lib/textconsole.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/textconsole.py
similarity index 84%
rename from src/drivers/MAVLinkServer/modules/lib/textconsole.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/textconsole.py
index 88d762785..52d3d1f92 100644
--- a/src/drivers/MAVLinkServer/modules/lib/textconsole.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/textconsole.py
@@ -9,7 +9,9 @@ class SimpleConsole():
'''
a message console for MAVProxy
'''
- def __init__(self):
+ def __init__(self, udp, tcp):
+ self.udp = udp
+ self.tcp = tcp
pass
def write(self, text, fg='black', bg='white'):
@@ -19,6 +21,10 @@ def write(self, text, fg='black', bg='white'):
else:
sys.stdout.write(str(text))
sys.stdout.flush()
+ if self.udp.connected():
+ self.udp.writeln(text)
+ if self.tcp.connected():
+ self.tcp.writeln(text)
def writeln(self, text, fg='black', bg='white'):
'''write to the console with linefeed'''
diff --git a/src/drivers/MAVLinkServer/MAVProxy/modules/lib/udp.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/udp.py
new file mode 100644
index 000000000..cc01dce7f
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/udp.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+"""
+ MAVProxy UDP server
+"""
+import sys, socket
+
+class UdpServer():
+ '''
+ a udp server for MAVProxy
+ '''
+ def __init__(self):
+ self.client = None
+ self.socket = None
+ pass
+
+ def connect(self, address, port):
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ self.socket.bind((address, port))
+ self.address = address
+ self.port = port
+
+ def readln(self):
+ data, addr = self.socket.recvfrom(1024)
+ self.client = addr
+ return data
+
+ def writeln(self, data):
+ return self.socket.sendto(data, self.client)
+
+ def bound(self):
+ return self.socket is not None
+
+ def connected(self):
+ return self.client is not None
+
+
+if __name__ == "__main__":
+ # Test for UDP server
+ pass
diff --git a/src/drivers/MAVLinkServer/modules/lib/wx_loader.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_loader.py
similarity index 97%
rename from src/drivers/MAVLinkServer/modules/lib/wx_loader.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_loader.py
index ea9f78c54..b7d7e659e 100644
--- a/src/drivers/MAVLinkServer/modules/lib/wx_loader.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_loader.py
@@ -5,5 +5,5 @@
import traceback
print (traceback.print_stack())
raise Exception('Cannot access wx from main thread')
-
+
import wx
diff --git a/src/drivers/MAVLinkServer/modules/lib/wx_processguard.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_processguard.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wx_processguard.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_processguard.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wx_util.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_util.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wx_util.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wx_util.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxconsole.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole.py
similarity index 96%
rename from src/drivers/MAVLinkServer/modules/lib/wxconsole.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole.py
index a85b53181..2cd86a9df 100755
--- a/src/drivers/MAVLinkServer/modules/lib/wxconsole.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole.py
@@ -4,8 +4,9 @@
MAVProxy message console, implemented in a child process
"""
import multiprocessing, threading
-import textconsole, sys, time
-from wxconsole_util import Value, Text
+import sys, time
+from MAVProxy.modules.lib import textconsole
+from MAVProxy.modules.lib.wxconsole_util import Value, Text
class MessageConsole(textconsole.SimpleConsole):
'''
@@ -32,13 +33,12 @@ def child_task(self):
'''child process - this holds all the GUI elements'''
self.parent_pipe_send.close()
self.parent_pipe_recv.close()
-
+
import wx_processguard
from wx_loader import wx
from wxconsole_ui import ConsoleFrame
app = wx.App(False)
app.frame = ConsoleFrame(state=self, title=self.title)
- app.frame.SetDoubleBuffered(True)
app.frame.Show()
app.MainLoop()
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxconsole_ui.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole_ui.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wxconsole_ui.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole_ui.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxconsole_util.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole_util.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wxconsole_util.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxconsole_util.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxgrapheditor.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxgrapheditor.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wxgrapheditor.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxgrapheditor.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxsettings.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxsettings.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wxsettings.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxsettings.py
diff --git a/src/drivers/MAVLinkServer/modules/lib/wxsettings_ui.py b/src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxsettings_ui.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/lib/wxsettings_ui.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/lib/wxsettings_ui.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_DGPS.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_DGPS.py
similarity index 91%
rename from src/drivers/MAVLinkServer/modules/mavproxy_DGPS.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_DGPS.py
index 43b52f553..9cbff0e49 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_DGPS.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_DGPS.py
@@ -32,12 +32,12 @@ def idle_task(self):
try:
self.master.mav.gps_inject_data_send(
- self.target_system,
+ self.target_system,
self.target_component,
- len(data),
+ len(data),
bytearray(data.ljust(110, '\0')))
- except Exception,e:
+ except Exception(e):
print ("DGPS Failed:", e)
def init(mpstate):
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_HIL.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_HIL.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_HIL.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_HIL.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_antenna.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_antenna.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_antenna.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_antenna.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_arm.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_arm.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_arm.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_arm.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_auxopt.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_auxopt.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_auxopt.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_auxopt.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_battery.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_battery.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_battery.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_battery.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_calibration.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_calibration.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_calibration.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_calibration.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_cameraview.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_cameraview.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_cameraview.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_cameraview.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_checklist.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_checklist.py
similarity index 96%
rename from src/drivers/MAVLinkServer/modules/mavproxy_checklist.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_checklist.py
index c38b2d9dd..dfbef1ad4 100755
--- a/src/drivers/MAVLinkServer/modules/mavproxy_checklist.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_checklist.py
@@ -21,7 +21,7 @@ def mavlink_packet(self, msg):
return
if not self.checklist.is_alive():
return
-
+
type = msg.get_type()
master = self.master
@@ -74,14 +74,14 @@ def mavlink_packet(self, msg):
else:
self.checklist.set_check("Waypoints Loaded", 1)
- '''beforeTakeoffList - Compass active'''
+ '''beforeTakeoffList - Compass active'''
if type == 'GPS_RAW':
if math.fabs(msg.hdg - master.field('VFR_HUD', 'heading', '-')) < 10 or math.fabs(msg.hdg - master.field('VFR_HUD', 'heading', '-')) > 355:
self.checklist.set_check("Compass active", 1)
else:
self.checklist.set_check("Compass active", 0)
- '''beforeCruiseList - Airspeed > 10 m/s , Altitude > 30 m'''
+ '''beforeCruiseList - Airspeed > 10 m/s , Altitude > 30 m'''
if type == 'VFR_HUD':
rel_alt = master.field('GLOBAL_POSITION_INT', 'relative_alt', 0) * 1.0e-3
if rel_alt > 30:
@@ -93,7 +93,7 @@ def mavlink_packet(self, msg):
else:
self.checklist.set_check("Airspeed > 10 m/s", 0)
- '''beforeEngineList - IMU'''
+ '''beforeEngineList - IMU'''
if type in ['SYS_STATUS']:
sensors = { 'AS' : mavutil.mavlink.MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE,
'MAG' : mavutil.mavlink.MAV_SYS_STATUS_SENSOR_3D_MAG,
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_cmdlong.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_cmdlong.py
similarity index 79%
rename from src/drivers/MAVLinkServer/modules/mavproxy_cmdlong.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_cmdlong.py
index c61a0796c..7b062c18e 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_cmdlong.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_cmdlong.py
@@ -20,24 +20,13 @@ def __init__(self, mpstate):
self.add_command('posvel', self.cmd_posvel, "posvel")
self.add_command('parachute', self.cmd_parachute, "parachute",
[''])
- self.add_command('long', self.cmd_long, "execute mavlink long command",
- self.cmd_long_commands())
-
- def cmd_long_commands(self):
- atts = dir(mavutil.mavlink)
- atts = filter( lambda x : x.lower().startswith("mav_cmd"), atts)
- ret = []
- for att in atts:
- ret.append(att)
- ret.append(str(att[8:]))
- return ret
def cmd_takeoff(self, args):
'''take off'''
if ( len(args) != 1):
print("Usage: takeoff ALTITUDE_IN_METERS")
return
-
+
if (len(args) == 1):
altitude = float(args[0])
print("Take Off started")
@@ -80,7 +69,7 @@ def cmd_parachute(self, args):
def cmd_camctrlmsg(self, args):
'''camctrlmsg'''
-
+
print("Sent DIGICAM_CONFIGURE CMD_LONG")
self.master.mav.command_long_send(
self.settings.target_system, # target_system
@@ -97,7 +86,7 @@ def cmd_camctrlmsg(self, args):
def cmd_cammsg(self, args):
'''cammsg'''
-
+
print("Sent DIGICAM_CONTROL CMD_LONG")
self.master.mav.command_long_send(
self.settings.target_system, # target_system
@@ -117,7 +106,7 @@ def cmd_do_change_speed(self, args):
if ( len(args) != 1):
print("Usage: speed SPEED_VALUE")
return
-
+
if (len(args) == 1):
speed = float(args[0])
print("SPEED %s" % (str(speed)))
@@ -139,7 +128,7 @@ def cmd_condition_yaw(self, args):
if ( len(args) != 3):
print("Usage: yaw ANGLE ANGULAR_SPEED MODE:[0 absolute / 1 relative]")
return
-
+
if (len(args) == 3):
angle = float(args[0])
angular_speed = float(args[1])
@@ -168,17 +157,18 @@ def cmd_velocity(self, args):
x_mps = float(args[0])
y_mps = float(args[1])
z_mps = float(args[2])
- print("x:%f, y:%f, z:%f" % (x_mps, y_mps, z_mps))
+ #print("x:%f, y:%f, z:%f" % (x_mps, y_mps, z_mps))
+
self.master.mav.set_position_target_local_ned_send(
- 0, # system time in milliseconds
- 1, # target system
- 0, # target component
- 8, # coordinate frame MAV_FRAME_BODY_NED
- 455, # type mask (vel only)
- 0, 0, 0, # position x,y,z
- x_mps, y_mps, z_mps, # velocity x,y,z
- 0, 0, 0, # accel x,y,z
- 0, 0) # yaw, yaw rate
+ 0, # time_boot_ms (not used)
+ 0, 0, # target system, target component
+ mavutil.mavlink.MAV_FRAME_LOCAL_NED, # frame
+ 0b0000111111000111, # type_mask (only speeds enabled)
+ 0, 0, 0, # x, y, z positions (not used)
+ x_mps, y_mps, -z_mps, # x, y, z velocity in m/s
+ 0, 0, 0, # x, y, z acceleration (not supported yet, ignored in GCS_Mavlink)
+ 0, 0) # yaw, yaw_rate (not supported yet, ignored in GCS_Mavlink)
+
def cmd_position(self, args):
'''position x-m y-m z-m'''
@@ -240,7 +230,7 @@ def cmd_posvel(self, args):
latlon = [0, 0]
else:
ignoremask = ignoremask & 504
- print ("found latlon", ignoremask )
+ print ("found latlon", ignoremask)
vN = 0
vE = 0
vD = 0
@@ -265,36 +255,6 @@ def cmd_posvel(self, args):
0, 0, 0, # accel x,y,z
0, 0) # yaw, yaw rate
- def cmd_long(self, args):
- '''execute supplied command long'''
- if len(args) < 1:
- print("Usage: long [arg1] [arg2]...")
- return
- command = None
- if args[0].isdigit():
- command = int(args[0])
- else:
- try:
- command = eval("mavutil.mavlink." + args[0])
- except AttributeError as e:
- try:
- command = eval("mavutil.mavlink.MAV_CMD_" + args[0])
- except AttributeError as e:
- pass
-
- if command is None:
- print("Unknown command long ({0})".format(args[0]))
- return
-
- floating_args = [ float(x) for x in args[1:] ]
- while len(floating_args) < 7:
- floating_args.append(float(0))
- self.master.mav.command_long_send(self.settings.target_system,
- self.settings.target_component,
- command,
- 0,
- *floating_args)
-
def init(mpstate):
'''initialise module'''
return CmdlongModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_console.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_console.py
similarity index 93%
rename from src/drivers/MAVLinkServer/modules/mavproxy_console.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_console.py
index 7ab9942fe..3734355d5 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_console.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_console.py
@@ -139,13 +139,9 @@ def mavlink_packet(self, msg):
sats_string = "%u" % num_sats1
else:
sats_string = "%u/%u" % (num_sats1, num_sats2)
- if ((msg.fix_type >= 3 and master.mavlink10()) or
+ if ((msg.fix_type == 3 and master.mavlink10()) or
(msg.fix_type == 2 and not master.mavlink10())):
- if (msg.fix_type >= 4):
- fix_type = "%u" % msg.fix_type
- else:
- fix_type = ""
- self.console.set_status('GPS', 'GPS: OK%s (%s)' % (fix_type, sats_string), fg='green')
+ self.console.set_status('GPS', 'GPS: OK (%s)' % sats_string, fg='green')
else:
self.console.set_status('GPS', 'GPS: %u (%s)' % (msg.fix_type, sats_string), fg='red')
if master.mavlink10():
@@ -303,12 +299,7 @@ def mavlink_packet(self, msg):
arm_colour = 'green'
else:
arm_colour = 'red'
- armstring = 'ARM'
- # add safety switch state
- if 'SYS_STATUS' in self.mpstate.status.msgs:
- if (self.mpstate.status.msgs['SYS_STATUS'].onboard_control_sensors_enabled & mavutil.mavlink.MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS) == 0:
- armstring += '(SAFE)'
- self.console.set_status('ARM', armstring, fg=arm_colour)
+ self.console.set_status('ARM', 'ARM', fg=arm_colour)
if self.max_link_num != len(self.mpstate.mav_master):
for i in range(self.max_link_num):
self.console.set_status('Link%u'%(i+1), '', row=1)
@@ -331,12 +322,7 @@ def mavlink_packet(self, msg):
fg = 'dark green'
self.console.set_status('Link%u'%m.linknum, linkline, row=1, fg=fg)
elif type in ['WAYPOINT_CURRENT', 'MISSION_CURRENT']:
- wpmax = self.module('wp').wploader.count()
- if wpmax > 0:
- wpmax = "/%u" % wpmax
- else:
- wpmax = ""
- self.console.set_status('WP', 'WP %u%s' % (msg.seq, wpmax))
+ self.console.set_status('WP', 'WP %u' % msg.seq)
lat = master.field('GLOBAL_POSITION_INT', 'lat', 0) * 1.0e-7
lng = master.field('GLOBAL_POSITION_INT', 'lon', 0) * 1.0e-7
if lat != 0 and lng != 0:
@@ -360,11 +346,7 @@ def mavlink_packet(self, msg):
aspd_error_sign = "L"
else:
aspd_error_sign = "H"
- if math.isnan(msg.alt_error):
- alt_error = "NaN"
- else:
- alt_error = "%d%s" % (msg.alt_error, alt_error_sign)
- self.console.set_status('AltError', 'AltError %s' % alt_error)
+ self.console.set_status('AltError', 'AltError %d%s' % (msg.alt_error, alt_error_sign))
self.console.set_status('AspdError', 'AspdError %.1f%s' % (msg.aspd_error*0.01, aspd_error_sign))
def init(mpstate):
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_dataflash_logger.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_dataflash_logger.py
similarity index 64%
rename from src/drivers/MAVLinkServer/modules/mavproxy_dataflash_logger.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_dataflash_logger.py
index 02450fc47..a4fd638ca 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_dataflash_logger.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_dataflash_logger.py
@@ -17,6 +17,7 @@
import types
import sys
from pymavlink import mavutil
+import random
import errno
from MAVProxy.modules.lib import mp_module
@@ -29,7 +30,7 @@ class dataflash_logger(mp_module.MPModule):
def __init__(self, mpstate):
"""Initialise module. We start poking the UAV for messages after this is called"""
super(dataflash_logger, self).__init__(mpstate, "dataflash_logger", "logging of mavlink dataflash messages")
- self.sender = None
+ self.new_log_started = False
self.stopped = False
self.time_last_start_packet_sent = 0
self.time_last_stop_packet_sent = 0
@@ -37,8 +38,6 @@ def __init__(self, mpstate):
self.log_settings = mp_settings.MPSettings(
[ ('verbose', bool, False),
- ('df_target_system', int, 0),
- ('df_target_component', int, mavutil.mavlink.MAV_COMP_ID_LOG)
])
self.add_command('dataflash_logger', self.cmd_dataflash_logger, "dataflash logging control", ['status','start','stop','set (LOGSETTING)'])
self.add_completion_function('(LOGSETTING)', self.log_settings.completion)
@@ -54,7 +53,7 @@ def cmd_dataflash_logger(self, args):
elif args[0] == "status":
print (self.status())
elif args[0] == "stop":
- self.sender = None
+ self.new_log_started = False
self.stopped = True
elif args[0] == "start":
self.stopped = False
@@ -100,7 +99,7 @@ def start_new_log(self):
'''open a new dataflash log, reset state'''
filename = self.new_log_filepath()
- self.last_seqno = 0
+ self.block_cnt = 0
self.logfile = open(filename, 'w+b')
print("DFLogger: logging started (%s)" % (filename))
self.prev_cnt = 0
@@ -113,7 +112,6 @@ def start_new_log(self):
self.blocks_to_ack_and_nack = []
self.missing_found = 0
self.abandoned = 0
- self.dropped = 0
def status(self):
'''returns information about module'''
@@ -124,13 +122,12 @@ def status(self):
return("DFLogger: %(state)s Rate(%(interval)ds):%(rate).3fkB/s Block:%(block_cnt)d Missing:%(missing)d Fixed:%(fixed)d Abandoned:%(abandoned)d" %
{"interval": interval,
"rate": transfered/(interval*1000),
- "block_cnt": self.last_seqno,
+ "block_cnt": self.block_cnt,
"missing": len(self.missing_blocks),
"fixed": self.missing_found,
"abandoned": self.abandoned,
"state": "Inactive" if self.stopped else "Active"
})
-
def idle_print_status(self):
'''print out statistics every 10 seconds from idle loop'''
now = time.time()
@@ -152,12 +149,7 @@ def idle_send_acks_and_nacks(self):
[master, block, status, first_sent, last_sent] = stuff
if status == 1:
# print("DFLogger: ACKing block (%d)" % (block,))
- mavstatus = mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_ACK
- (target_sys,target_comp) = self.sender
- self.master.mav.remote_log_block_status_send(target_sys,
- target_comp,
- block,
- mavstatus)
+ self.master.mav.remote_log_block_status_send(block,status)
blocks_sent += 1
del self.acking_blocks[block]
del self.blocks_to_ack_and_nack[i]
@@ -169,10 +161,10 @@ def idle_send_acks_and_nacks(self):
continue
# give up on packet if we have seen one with a much higher
- # number (or after 60 seconds):
- if (self.last_seqno - block > 200) or (now - first_sent > 60):
- if self.log_settings.verbose:
- print("DFLogger: Abandoning block (%d)" % (block,))
+ # number:
+ if self.block_cnt - block > 200 or \
+ now - first_sent > 60:
+ print("DFLogger: Abandoning block (%d)" % (block,))
del self.blocks_to_ack_and_nack[i]
del self.missing_blocks[block]
self.abandoned += 1
@@ -184,14 +176,8 @@ def idle_send_acks_and_nacks(self):
if now - last_sent < 0.1:
continue
- if self.log_settings.verbose:
- print("DFLogger: Asking for block (%d)" % (block,))
- mavstatus = mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_NACK
- (target_sys,target_comp) = self.sender
- self.master.mav.remote_log_block_status_send(target_sys,
- target_comp,
- block,
- mavstatus)
+ print("DFLogger: NACKing block (%d)" % (block,))
+ self.master.mav.remote_log_block_status_send(block,status)
blocks_sent += 1
stuff[4] = now
@@ -201,110 +187,59 @@ def idle_task_started(self):
self.idle_print_status()
self.idle_send_acks_and_nacks()
- def idle_task_not_started(self):
- '''called in idle task only when logging is not running'''
- if not self.stopped:
- self.tell_sender_to_start()
-
def idle_task(self):
- '''called rapidly by mavproxy'''
- if self.sender is not None:
+ if self.new_log_started == True:
self.idle_task_started()
- else:
- self.idle_task_not_started()
-
- def tell_sender_to_stop(self, m):
- '''send a stop packet (if we haven't sent one in the last second)'''
- now = time.time()
- if now - self.time_last_stop_packet_sent < 1:
- return
- if self.log_settings.verbose:
- print("DFLogger: Sending stop packet")
- self.time_last_stop_packet_sent = now
- self.master.mav.remote_log_block_status_send(m.get_srcSystem(),
- m.get_srcComponent(),
- mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_STOP,
- 1)
- def tell_sender_to_start(self):
- '''send a start packet (if we haven't sent one in the last second)'''
- now = time.time()
- if now - self.time_last_start_packet_sent < 1:
- return
- self.time_last_start_packet_sent = now
-
- if self.log_settings.verbose:
- print("DFLogger: Sending start packet")
-
- target_sys = self.log_settings.df_target_system
- target_comp = self.log_settings.df_target_component
- self.master.mav.remote_log_block_status_send(target_sys,
- target_comp,
- mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_START,
- 1)
-
- def packet_is_for_me(self, m):
- '''returns true if this packet is appropriately addressed'''
- if m.target_system != self.master.mav.srcSystem:
- return False
- if m.target_component != self.master.mav.srcComponent:
- return False
- # if have a sender we can also check the source address:
- if self.sender is not None:
- if (m.get_srcSystem(),m.get_srcComponent()) != self.sender:
- return False;
- return True
def mavlink_packet(self, m):
- '''handle mavlink packets'''
+ '''handle REMOTE_LOG_DATA_BLOCK packets'''
+ now = time.time()
if m.get_type() == 'REMOTE_LOG_DATA_BLOCK':
- now = time.time()
- if not self.packet_is_for_me(m):
- dropped += 1
+ if self.stopped:
+ # send a stop packet every second until the other end gets the idea:
+ if now - self.time_last_stop_packet_sent > 1:
+ if self.log_settings.verbose:
+ print("DFLogger: Sending stop packet")
+ self.master.mav.remote_log_block_status_send(mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_STOP,1)
return
- if self.sender is None and m.seqno == 0:
+# if random.random() < 0.1: # drop 1 packet in 10
+# return
+
+
+ if not self.new_log_started:
if self.log_settings.verbose:
print("DFLogger: Received data packet - starting new log")
self.start_new_log()
- self.sender = (m.get_srcSystem(), m.get_srcComponent())
-
- if self.sender is None:
- # No connection at the moment, and this packet did not start one
- return
-
- if self.stopped:
- # send a stop packet every second until the other end gets the idea:
- self.tell_sender_to_stop(m)
- return
-
- if self.sender is not None:
- size = len(m.data)
+ self.new_log_started = True
+ if self.new_log_started == True:
+ size = m.block_size
data = ''.join(str(chr(x)) for x in m.data[:size])
- ofs = size*(m.seqno)
+ ofs = size*(m.block_cnt)
self.logfile.seek(ofs)
self.logfile.write(data)
-
- if m.seqno in self.missing_blocks:
+
+ if m.block_cnt in self.missing_blocks:
if self.log_settings.verbose:
- print("DFLogger: Received missing block: %d" % (m.seqno,))
- del self.missing_blocks[m.seqno]
+ print("DFLogger: Received missing block: %d" % (m.block_cnt,))
+ del self.missing_blocks[m.block_cnt]
self.missing_found += 1
- self.blocks_to_ack_and_nack.append([self.master,m.seqno,1,now,None])
- self.acking_blocks[m.seqno] = 1
+ self.blocks_to_ack_and_nack.append([self.master,m.block_cnt,1,now,None])
+ self.acking_blocks[m.block_cnt] = 1
# print("DFLogger: missing blocks: %s" % (str(self.missing_blocks),))
else:
# ACK the block we just got:
- if m.seqno in self.acking_blocks:
+ if m.block_cnt in self.acking_blocks:
# already acking this one; we probably sent
# multiple nacks and received this one
# multiple times
pass
else:
- self.blocks_to_ack_and_nack.append([self.master,m.seqno,1,now,None])
- self.acking_blocks[m.seqno] = 1
+ self.blocks_to_ack_and_nack.append([self.master,m.block_cnt,1,now,None])
+ self.acking_blocks[m.block_cnt] = 1
# NACK any blocks we haven't seen and should have:
- if(m.seqno - self.last_seqno > 1):
- for block in range(self.last_seqno+1, m.seqno):
+ if(m.block_cnt - self.block_cnt > 1):
+ for block in range(self.block_cnt+1, m.block_cnt):
if block not in self.missing_blocks and \
block not in self.acking_blocks:
self.missing_blocks[block] = 1
@@ -312,9 +247,16 @@ def mavlink_packet(self, m):
print ("DFLogger: setting %d for nacking" % (block,))
self.blocks_to_ack_and_nack.append([self.master,block,0,now,None])
#print "\nmissed blocks: ",self.missing_blocks
- if self.last_seqno < m.seqno:
- self.last_seqno = m.seqno
+ if self.block_cnt < m.block_cnt:
+ self.block_cnt = m.block_cnt
self.download += size
+ elif not self.new_log_started and not self.stopped:
+ # send a start packet every second until the other end gets the idea:
+ if now - self.time_last_start_packet_sent > 1:
+ if self.log_settings.verbose:
+ print("DFLogger: Sending start packet")
+ self.master.mav.remote_log_block_status_send(mavutil.mavlink.MAV_REMOTE_LOG_DATA_BLOCK_START,1)
+ self.time_last_start_packet_sent = now
def init(mpstate):
'''initialise module'''
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_fence.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_fence.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_fence.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_fence.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_gasheli.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gasheli.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_gasheli.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gasheli.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_gimbal.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gimbal.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/mavproxy_gimbal.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gimbal.py
index 0c3ce9738..d27e5c030 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_gimbal.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gimbal.py
@@ -90,7 +90,7 @@ def cmd_gimbal_roi(self, args):
latlon[1]*1e7,
0, # altitude zero for now
0)
-
+
def cmd_gimbal_roi_vel(self, args):
'''control roi position and velocity'''
if len(args) != 0 and len(args) != 3 and len(args) != 6:
@@ -187,7 +187,7 @@ def mavlink_packet(self, m):
rotmat_copter_gimbal = Matrix3()
rotmat_copter_gimbal.from_euler312(m.joint_roll, m.joint_el, m.joint_az)
gimbal_dcm = vehicle_dcm * rotmat_copter_gimbal
-
+
lat = gpi.lat * 1.0e-7
lon = gpi.lon * 1.0e-7
alt = gpi.relative_alt * 1.0e-3
@@ -201,7 +201,7 @@ def mavlink_packet(self, m):
# get view point of camera when not rotated
view_point = Vector3(1, 0, 0)
-
+
# rotate view_point to form current view vector
rot_point = gimbal_dcm * view_point
@@ -211,8 +211,8 @@ def mavlink_packet(self, m):
# find the intersection with the ground
pt = line.plane_intersection(ground_plane, forward_only=True)
if pt is None:
- # its pointing up into the sky
- return None
+ # its pointing up into the sky
+ return None
(view_lat, view_lon) = mp_util.gps_offset(lat, lon, pt.y, pt.x)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_gopro.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gopro.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_gopro.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_gopro.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_graph.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_graph.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_graph.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_graph.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_help.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_help.py
similarity index 98%
rename from src/drivers/MAVLinkServer/modules/mavproxy_help.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_help.py
index b786d6953..8e6fdd652 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_help.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_help.py
@@ -35,7 +35,7 @@ def __init__(self, mpstate):
#check for updates, if able
if platform.system() == 'Windows':
- req = Request('http://firmware.ardupilot.org/Tools/MAVProxy/')
+ req = Request('http://firmware.diydrones.com/Tools/MAVProxy/')
html = ''
self.newversion = '1.0'
try:
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_joystick.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_joystick.py
similarity index 95%
rename from src/drivers/MAVLinkServer/modules/mavproxy_joystick.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_joystick.py
index fab4d5d79..d8eb001c2 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_joystick.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_joystick.py
@@ -36,7 +36,7 @@
# Same as above but is reporting a different name
# http://www.hobbyking.com/hobbyking/store/__13597__USB_Simulator_Cable_XTR_AeroFly_FMS.html
# has 4 usable axes. The last 4 are binary switches and not PWM outputs.
- # Axis, Scaling Number,
+ # Axis, Scaling Number,
[(0, 500, 1500),
(3, 500, 1500),
(1, 500, 1500),
@@ -67,9 +67,9 @@
'GREAT PLANES InterLink Elite':
# 4 axes usable
[(0, 500, 1500),
- (1, 500, 1500),
+ (1, -500, 1500),
(2, -1000, 1500),
- (4, 500, 1500),
+ (4, -500, 1500),
None,
None,
None,
@@ -116,15 +116,7 @@
(2, -500, 1500), # Throttle
(4, 500, 1500), # Yaw
None,
- None],
-
- 'WAILLY PPM*':
- [(0, 500, 1500),
- (1, 500, 1500),
- (2, 500, 1500),
- (5, 500, 1500),
- (3, 500, 1600),
- (4, 500, 1500)]
+ None]
}
class JSModule(mp_module.MPModule):
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_link.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_link.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/mavproxy_link.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_link.py
index 70061e52a..2ecdc9a54 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_link.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_link.py
@@ -288,7 +288,7 @@ def master_callback(self, m, master):
if mtype in delayedPackets:
return
- if mtype == 'HEARTBEAT' and m.type != mavutil.mavlink.MAV_TYPE_GCS:
+ if mtype == 'HEARTBEAT' and m.get_srcSystem() != 255:
if self.settings.target_system == 0 and self.settings.target_system != m.get_srcSystem():
self.settings.target_system = m.get_srcSystem()
self.say("online system %u" % self.settings.target_system,'message')
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_log.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_log.py
similarity index 88%
rename from src/drivers/MAVLinkServer/modules/mavproxy_log.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_log.py
index 571812563..7c61213b7 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_log.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_log.py
@@ -21,7 +21,6 @@ def reset(self):
self.download_ofs = 0
self.retries = 0
self.entries = {}
- self.download_queue = []
def mavlink_packet(self, m):
'''handle an incoming mavlink packet'''
@@ -72,8 +71,6 @@ def handle_log_data(self, m):
self.download_file = None
self.download_filename = None
self.download_set = set()
- if len(self.download_queue):
- self.log_download_next()
def handle_log_data_missing(self):
'''handling missing incoming log data'''
@@ -125,18 +122,6 @@ def log_status(self):
self.retries,
len(diff)))
- def log_download_next(self):
- latest = self.download_queue.pop()
- filename = self.default_log_filename(latest)
- self.log_download(latest, filename)
-
- def log_download_all(self):
- if len(self.entries.keys()) == 0:
- print("Please use log list first")
- return
- self.download_queue = sorted(self.entries, key=lambda id: self.entries[id].time_utc)
- self.log_download_next()
-
def log_download(self, log_num, filename):
'''download a log file'''
print("Downloading log %u as %s" % (log_num, filename))
@@ -152,19 +137,15 @@ def log_download(self, log_num, filename):
self.download_ofs = 0
self.retries = 0
- def default_log_filename(self, log_num):
- return "log%u.bin" % log_num
-
def cmd_log(self, args):
'''log commands'''
- usage = "usage: log "
if len(args) < 1:
- print(usage)
+ print("usage: log ")
return
if args[0] == "status":
self.log_status()
- elif args[0] == "list":
+ if args[0] == "list":
print("Requesting log list")
self.download_set = set()
self.master.mav.log_request_list_send(self.target_system,
@@ -188,9 +169,6 @@ def cmd_log(self, args):
if len(args) < 2:
print("usage: log download ")
return
- if args[1] == 'all':
- self.log_download_all()
- return
if args[1] == 'latest':
if len(self.entries.keys()) == 0:
print("Please use log list first")
@@ -201,11 +179,8 @@ def cmd_log(self, args):
if len(args) > 2:
filename = args[2]
else:
- filename = self.default_log_filename(log_num)
+ filename = "log%u.bin" % log_num
self.log_download(log_num, filename)
- else:
- print(usage)
-
def idle_task(self):
'''handle missing log data'''
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/GAreader.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/GAreader.py
similarity index 96%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/GAreader.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/GAreader.py
index fb8aff2d7..4dfcc8161 100755
--- a/src/drivers/MAVLinkServer/modules/mavproxy_map/GAreader.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/GAreader.py
@@ -31,7 +31,7 @@ def read_ermapper(self, ifile):
else:
data_file = ifile
header_file = ifile + '.ers'
-
+
self.header = self.read_ermapper_header(header_file)
nroflines = int(self.header['nroflines'])
@@ -71,7 +71,7 @@ def read_ermapper_header(self, ifile):
tmp_string = line.strip().split('=')
header[tmp_string[0].strip().lower()]= tmp_string[1].strip()
- return header
+ return header
def read_ermapper_data(self, ifile, data_format = numpy.float32, offset=0):
# open input file in a binary format and read the input string
@@ -127,17 +127,17 @@ def getAltitudeAtPoint(self, latty, longy):
y = numpy.abs((longy - self.startlongitude)/self.deltalongitude)
#do some interpolation
- # print ("x,y", x, y)
+ # print "x,y", x, y
x_int = int(x)
x_frac = x - int(x)
y_int = int(y)
y_frac = y - int(y)
- #print ("frac", x_int, x_frac, y_int, y_frac)
+ #print "frac", x_int, x_frac, y_int, y_frac
value00 = self.data[x_int, y_int]
value10 = self.data[x_int+1, y_int]
value01 = self.data[x_int, y_int+1]
value11 = self.data[x_int+1, y_int+1]
- #print ("values ", value00, value10, value01, value11)
+ #print "values ", value00, value10, value01, value11
#check for null values
if value00 == -99999:
@@ -174,7 +174,7 @@ def _avg(value1, value2, weight):
mappy = ERMap()
mappy.read_ermapper(os.path.join(os.environ['HOME'], './Documents/Elevation/Canberra/GSNSW_P756demg'))
- #print some header data
+ #print some header data
mappy.printBoundingBox()
#get a measure of data quality
@@ -197,7 +197,3 @@ def _avg(value1, value2, weight):
print ("Alt at (-35.045126, 149.257482) is 577m (Google) or " + str(alt))
alt = mappy.getAltitudeAtPoint(-35.564044, 149.177657)
print ("Alt at (-35.564044, 149.177657) is 1113m (Google) or " + str(alt))
-
-
-
-
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/__init__.py
similarity index 95%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/__init__.py
index 76f75d560..f5f0d2ea6 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_map/__init__.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/__init__.py
@@ -41,7 +41,6 @@ def __init__(self, mpstate):
self.ElevationMap = mp_elevation.ElevationModel()
self.last_unload_check_time = time.time()
self.unload_check_interval = 0.1 # seconds
- self.showLandingZone = 0
self.map_settings = mp_settings.MPSettings(
[ ('showgpspos', int, 0),
('showgps2pos', int, 1),
@@ -70,28 +69,12 @@ def __init__(self, mpstate):
self.add_menu(MPMenuItem('Set Home', 'Set Home', '# map sethome '))
self.add_menu(MPMenuItem('Terrain Check', 'Terrain Check', '# terrain check'))
self.add_menu(MPMenuItem('Show Position', 'Show Position', 'showPosition'))
- self.add_menu(MPMenuCheckbox('Show Landing Zone', 'Show Landing Zone', 'showLandingZone'))
def add_menu(self, menu):
'''add to the default popup menu'''
from MAVProxy.modules.mavproxy_map import mp_slipmap
self.default_popup.add(menu)
self.mpstate.map.add_object(mp_slipmap.SlipDefaultPopup(self.default_popup, combine=True))
-
- def show_LandingZone(self):
- '''show/hide the UAV Challenge landing zone around the clicked point'''
- from MAVProxy.modules.mavproxy_map import mp_slipmap
- pos = self.click_position
- 'Create a new layer of two circles - at 30m and 80m radius around the above point'
- if(self.mpstate.showLandingZone):
- self.mpstate.map.add_object(mp_slipmap.SlipClearLayer('LandingZone'))
- self.mpstate.map.add_object(mp_slipmap.SlipCircle('LandingZoneInner', layer='LandingZone', latlon=pos, radius=30, linewidth=2, color=(0,0,255)))
- self.mpstate.map.add_object(mp_slipmap.SlipCircle('LandingZoneOuter', layer='LandingZone', latlon=pos, radius=80, linewidth=2, color=(0,0,255)))
- else:
- self.mpstate.map.remove_object('LandingZoneInner')
- self.mpstate.map.remove_object('LandingZoneOuter')
- self.mpstate.map.remove_object('LandingZone')
-
def show_position(self):
'''show map position click information'''
@@ -282,10 +265,6 @@ def handle_menu_event(self, obj):
self.move_fencepoint(obj.selected[0].objkey, obj.selected[0].extra_info)
elif menuitem.returnkey == 'showPosition':
self.show_position()
- elif menuitem.returnkey == 'showLandingZone':
- self.mpstate.showLandingZone = menuitem.IsChecked()
- self.show_LandingZone()
-
def map_callback(self, obj):
'''called when an event happens on the slipmap'''
@@ -476,7 +455,7 @@ def mavlink_packet(self, m):
self.mpstate.map.set_position('Pos' + vehicle, (self.lat, self.lon), rotation=self.heading)
if m.get_type() == "NAV_CONTROLLER_OUTPUT":
- if (self.master.flightmode in [ "AUTO", "GUIDED", "LOITER", "RTL", "QRTL", "QLOITER", "QLAND" ] and
+ if (self.master.flightmode in [ "AUTO", "GUIDED", "LOITER", "RTL" ] and
self.lat is not None and self.lon is not None):
trajectory = [ (self.lat, self.lon),
mp_util.gps_newpos(self.lat, self.lon, m.target_bearing, m.wp_dist) ]
@@ -484,6 +463,12 @@ def mavlink_packet(self, m):
linewidth=2, colour=(255,0,180)))
else:
self.mpstate.map.add_object(mp_slipmap.SlipClearLayer('Trajectory'))
+
+ if m.get_type() == "ADSB_VEHICLE":
+ id = 'ADSB-' + str(m.ICAO_address)
+ # use plane icon for now
+ self.create_vehicle_icon(id, 'green', vehicle_type='plane')
+ self.mpstate.map.set_position(id, (m.lat*1e-7, m.lon*1e-7), rotation=m.heading)
# if the waypoints have changed, redisplay
last_wp_change = self.module('wp').wploader.last_change
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/barrell.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/barrell.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/barrell.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/barrell.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueantenna.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueantenna.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueantenna.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueantenna.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/bluecopter.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/bluecopter.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/bluecopter.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/bluecopter.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueheli.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueheli.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueheli.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueheli.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueplane.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueplane.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/blueplane.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/blueplane.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/bluerover.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/bluerover.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/bluerover.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/bluerover.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/camera-small-red.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/camera-small-red.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/camera-small-red.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/camera-small-red.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/flag.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/flag.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/flag.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/flag.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenantenna.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenantenna.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenantenna.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenantenna.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/greencopter.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greencopter.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/greencopter.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greencopter.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenheli.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenheli.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenheli.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenheli.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenplane.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenplane.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenplane.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenplane.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenrover.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenrover.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/greenrover.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/greenrover.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/hoop.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/hoop.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/hoop.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/hoop.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/loading.jpg b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/loading.jpg
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/loading.jpg
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/loading.jpg
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/orangeplane.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/orangeplane.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/orangeplane.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/orangeplane.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/purpleplane.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/purpleplane.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/purpleplane.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/purpleplane.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/rallypoint.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/rallypoint.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/rallypoint.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/rallypoint.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/ramp.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/ramp.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/ramp.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/ramp.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/redantenna.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redantenna.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/redantenna.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redantenna.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/redcopter.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redcopter.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/redcopter.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redcopter.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/redheli.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redheli.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/redheli.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redheli.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/redplane.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redplane.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/redplane.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redplane.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/redrover.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redrover.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/redrover.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/redrover.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/data/unavailable.jpg b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/unavailable.jpg
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/data/unavailable.jpg
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/data/unavailable.jpg
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_elevation.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_elevation.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/mp_elevation.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_elevation.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap_ui.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap_ui.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap_ui.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap_ui.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap_util.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap_util.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap_util.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap_util.py
index 591ac7bcc..68223058e 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_slipmap_util.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_slipmap_util.py
@@ -220,7 +220,7 @@ def draw(self, img, pixmapper, bounds):
'''draw a polygon on the image'''
if self.hidden:
return
- (x,y,w,h) = bounds
+ (x,y,w,h) = bounds
spacing = 1000
while True:
start = mp_util.latlon_round((x,y), spacing)
@@ -232,7 +232,7 @@ def draw(self, img, pixmapper, bounds):
spacing *= 10
else:
break
-
+
for i in range(count*2+2):
pos1 = mp_util.gps_newpos(start[0], start[1], 90, i*spacing)
pos3 = mp_util.gps_newpos(pos1[0], pos1[1], 0, 3*count*spacing)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_tile.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_tile.py
similarity index 88%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/mp_tile.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_tile.py
index 07e6dac83..1707f6e68 100755
--- a/src/drivers/MAVLinkServer/modules/mavproxy_map/mp_tile.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/mp_tile.py
@@ -51,7 +51,7 @@ def __init__(self, msg):
"OpenAerialMap" : "http://tile.openaerialmap.org/tiles/?v=mgm&layer=openaerialmap-900913&x=${X}&y=${Y}&zoom=${OAM_ZOOM}",
"OpenCycleMap" : "http://andy.sandbox.cloudmade.com/tiles/cycle/${ZOOM}/${X}/${Y}.png",
"StatKartTopo2" : "http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo2&zoom=${ZOOM}&x=${X}&y=${Y}"
-
+
}
# these are the md5sums of "unavailable" tiles
@@ -91,7 +91,7 @@ def __init__(self, tile, zoom, service, offset=(0,0)):
self.tile = tile
(self.x, self.y) = tile
self.zoom = zoom
- self.service = service
+ self.service = service
(self.offsetx, self.offsety) = offset
self.refresh_time()
@@ -162,7 +162,7 @@ class MPTile:
def __init__(self, cache_path=None, download=True, cache_size=500,
service="MicrosoftSat", tile_delay=0.3, debug=False,
max_zoom=19, refresh_age=30*24*60*60):
-
+
if cache_path is None:
try:
cache_path = os.path.join(os.environ['HOME'], '.tilecache')
@@ -181,7 +181,7 @@ def __init__(self, cache_path=None, download=True, cache_size=500,
self.tile_delay = tile_delay
self.service = service
self.debug = debug
- self.refresh_age = refresh_age
+ self.refresh_age = refresh_age
if service not in TILE_SERVICES:
raise TileException('unknown tile service %s' % service)
@@ -189,7 +189,7 @@ def __init__(self, cache_path=None, download=True, cache_size=500,
# _download_pending is a dictionary of TileInfo objects
self._download_pending = {}
self._download_thread = None
- self._loading = mp_icon('loading.jpg')
+ self._loading = mp_icon('loading.jpg')
self._unavailable = mp_icon('unavailable.jpg')
try:
self._tile_cache = collections.OrderedDict()
@@ -199,23 +199,19 @@ def __init__(self, cache_path=None, download=True, cache_size=500,
import ordereddict
self._tile_cache = ordereddict.OrderedDict()
- def set_service(self, service):
- '''set tile service'''
- self.service = service
+ def set_service(self, service):
+ self.service = service
- def get_service(self):
- '''get tile service'''
- return self.service
+ def get_service(self):
+ return self.service
- def get_service_list(self):
- '''return list of available services'''
- service_list = TILE_SERVICES.keys()
- service_list.sort()
- return service_list
+ def get_service_list(self):
+ service_list = TILE_SERVICES.keys()
+ service_list.sort()
+ return service_list
- def set_download(self, download):
- '''set download enable'''
- self.download = download
+ def set_download(self, download):
+ self.download = download
def coord_to_tile(self, lat, lon, zoom):
'''convert lat/lon/zoom to a TileInfo'''
@@ -263,22 +259,22 @@ def downloader(self):
try:
if self.debug:
print("Downloading %s [%u left]" % (url, len(keys)))
- req = urllib2.Request(url)
- if url.find('google') != -1:
- req.add_header('Referer', 'https://maps.google.com/')
+ req = urllib2.Request(url)
+ if url.find('google') != -1:
+ req.add_header('Referer', 'https://maps.google.com/')
resp = urllib2.urlopen(req)
headers = resp.info()
except urllib2.URLError as e:
#print('Error loading %s' % url)
- if not key in self._tile_cache:
- self._tile_cache[key] = self._unavailable
+ if not key in self._tile_cache:
+ self._tile_cache[key] = self._unavailable
self._download_pending.pop(key)
if self.debug:
print("Failed %s: %s" % (url, str(e)))
continue
if 'content-type' not in headers or headers['content-type'].find('image') == -1:
- if not key in self._tile_cache:
- self._tile_cache[key] = self._unavailable
+ if not key in self._tile_cache:
+ self._tile_cache[key] = self._unavailable
self._download_pending.pop(key)
if self.debug:
print("non-image response %s" % url)
@@ -291,8 +287,8 @@ def downloader(self):
if md5 in BLANK_TILES:
if self.debug:
print("blank tile %s" % url)
- if not key in self._tile_cache:
- self._tile_cache[key] = self._unavailable
+ if not key in self._tile_cache:
+ self._tile_cache[key] = self._unavailable
self._download_pending.pop(key)
continue
@@ -300,13 +296,13 @@ def downloader(self):
h = open(path+'.tmp','wb')
h.write(img)
h.close()
- try:
- os.unlink(path)
- except Exception:
- pass
- os.rename(path+'.tmp', path)
+ try:
+ os.unlink(path)
+ except Exception:
+ pass
+ os.rename(path+'.tmp', path)
self._download_pending.pop(key)
- self._download_thread = None
+ self._download_thread = None
def start_download_thread(self):
'''start the downloader'''
@@ -356,16 +352,16 @@ def load_tile_lowres(self, tile):
continue
# copy out the quadrant we want
- availx = min(TILES_WIDTH - tile_info.offsetx, width2)
- availy = min(TILES_HEIGHT - tile_info.offsety, height2)
- if availx != width2 or availy != height2:
- continue
+ availx = min(TILES_WIDTH - tile_info.offsetx, width2)
+ availy = min(TILES_HEIGHT - tile_info.offsety, height2)
+ if availx != width2 or availy != height2:
+ continue
cv.SetImageROI(img, (tile_info.offsetx, tile_info.offsety, width2, height2))
img2 = cv.CreateImage((width2,height2), 8, 3)
- try:
- cv.Copy(img, img2)
- except Exception:
- continue
+ try:
+ cv.Copy(img, img2)
+ except Exception:
+ continue
cv.ResetImageROI(img)
# and scale it
@@ -392,14 +388,13 @@ def load_tile(self, tile):
path = self.tile_to_path(tile)
try:
ret = cv.LoadImage(path)
-
- # if it is an old tile, then try to refresh
- if os.path.getmtime(path) + self.refresh_age < time.time():
- try:
- self._download_pending[key].refresh_time()
- except Exception:
- self._download_pending[key] = tile
- self.start_download_thread()
+ # if it is an old tile, then try to refresh
+ if os.path.getmtime(path) + self.refresh_age < time.time():
+ try:
+ self._download_pending[key].refresh_time()
+ except Exception:
+ self._download_pending[key] = tile
+ self.start_download_thread()
# add it to the tile cache
self._tile_cache[key] = ret
while len(self._tile_cache) > self.cache_size:
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_map/srtm.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/srtm.py
similarity index 77%
rename from src/drivers/MAVLinkServer/modules/mavproxy_map/srtm.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/srtm.py
index 14edb015c..5f6f5e8eb 100755
--- a/src/drivers/MAVLinkServer/modules/mavproxy_map/srtm.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_map/srtm.py
@@ -6,8 +6,8 @@
"""Load and process SRTM data. Originally written by OpenStreetMap
Edited by CanberraUAV"""
-from HTMLParser import HTMLParser
-import httplib
+from html.parser import HTMLParser
+import http
import re
import pickle
import os.path
@@ -58,7 +58,7 @@ def __str__(self):
class SRTMDownloader():
"""Automatically download SRTM tiles."""
- def __init__(self, server="firmware.ardupilot.org",
+ def __init__(self, server="firmware.diydrones.com",
directory="/SRTM/",
cachedir=None,
offline=0,
@@ -76,8 +76,8 @@ def __init__(self, server="firmware.ardupilot.org",
self.server = server
self.directory = directory
self.cachedir = cachedir
- '''print ("SRTMDownloader - server= %s, directory=%s." % \
- (self.server, self.directory))'''
+ '''print "SRTMDownloader - server= %s, directory=%s." % \
+ (self.server, self.directory)'''
if not os.path.exists(cachedir):
mp_util.mkdir_p(cachedir)
self.filelist = {}
@@ -92,7 +92,7 @@ def loadFileList(self):
try:
data = open(self.filelist_file, 'rb')
except IOError:
- '''print ("No SRTM cached file list. Creating new one!")'''
+ '''print "No SRTM cached file list. Creating new one!"'''
if self.offline == 0:
self.createFileList()
return
@@ -104,7 +104,7 @@ def loadFileList(self):
if self.offline == 0:
self.createFileList()
except:
- '''print ("Unknown error loading cached SRTM file list. Creating new one!")'''
+ '''print "Unknown error loading cached SRTM file list. Creating new one!"'''
if self.offline == 0:
self.createFileList()
@@ -124,73 +124,73 @@ def createFileListHTTP(self):
mp_util.child_close_fds()
if self.debug:
print("Connecting to %s" % self.server)
- conn = httplib.HTTPConnection(self.server)
- conn.request("GET",self.directory)
- r1 = conn.getresponse()
+ #conn = http.client.HTTPConnection(self.server)
+ #conn.request("GET",self.directory)
+ #r1 = conn.getresponse()
'''if r1.status==200:
- print ("status200 received ok")
+ print "status200 received ok"
else:
- print ("oh no = status=%d %s" \
- % (r1.status,r1.reason))'''
-
- data = r1.read()
- parser = parseHTMLDirectoryListing()
- parser.feed(data)
- continents = parser.getDirListing()
- '''print (continents)'''
- conn.close()
-
- for continent in continents:
- if not continent[0].isalpha() or continent.startswith('README'):
- continue
- '''print ("Downloading file list for", continent)'''
- url = "%s%s" % (self.directory,continent)
- if self.debug:
- print("fetching %s" % url)
- try:
- conn = httplib.HTTPConnection(self.server)
- conn.request("GET", url)
- r1 = conn.getresponse()
- except Exception as ex:
- print("Failed to download %s : %s" % (url, ex))
- continue
- '''if r1.status==200:
- print ("status200 received ok)"
- else:
- print ("oh no = status=%d %s" \
- % (r1.status,r1.reason))'''
- data = r1.read()
- conn.close()
- parser = parseHTMLDirectoryListing()
- parser.feed(data)
- files = parser.getDirListing()
-
- for filename in files:
- self.filelist[self.parseFilename(filename)] = (
- continent, filename)
-
- '''print (self.filelist)'''
- # Add meta info
- self.filelist["server"] = self.server
- self.filelist["directory"] = self.directory
- tmpname = self.filelist_file + ".tmp"
- with open(tmpname , 'wb') as output:
- pickle.dump(self.filelist, output)
- output.close()
- try:
- os.unlink(self.filelist_file)
- except Exception:
- pass
- os.rename(tmpname, self.filelist_file)
- if self.debug:
- print("created file list with %u entries" % len(self.filelist))
+ print "oh no = status=%d %s" \
+ % (r1.status,r1.reason)'''
+
+ #data = r1.read()
+ #parser = parseHTMLDirectoryListing()
+ #parser.feed(str(data))
+ #continents = parser.getDirListing()
+ '''print continents'''
+ #conn.close()
+
+ #for continent in continents:
+ # if not continent[0].isalpha() or continent.startswith('README'):
+ # continue
+ # '''print "Downloading file list for", continent'''
+ # url = "%s%s" % (self.directory,continent)
+ # if self.debug:
+ # print("fetching %s" % url)
+ # try:
+ # conn = http.client.HTTPConnection(self.server)
+ # conn.request("GET", url)
+ # r1 = conn.getresponse()
+ # except Exception as ex:
+ # print("Failed to download %s : %s" % (url, ex))
+ # continue
+ # '''if r1.status==200:
+ # print "status200 received ok"
+ # else:
+ # print "oh no = status=%d %s" \
+ # % (r1.status,r1.reason)'''
+ # data = r1.read()
+ # conn.close()
+ # parser = parseHTMLDirectoryListing()
+ # parser.feed(str(data))
+ # files = parser.getDirListing()
+
+ # for filename in files:
+ # self.filelist[self.parseFilename(filename)] = (
+ # continent, filename)
+
+ # '''print self.filelist'''
+ ## Add meta info
+ #self.filelist["server"] = self.server
+ #self.filelist["directory"] = self.directory
+ #tmpname = self.filelist_file + ".tmp"
+ #with open(tmpname , 'wb') as output:
+ # pickle.dump(self.filelist, output)
+ # output.close()
+ # try:
+ # os.unlink(self.filelist_file)
+ # except Exception:
+ # pass
+ # os.rename(tmpname, self.filelist_file)
+ #if self.debug:
+ # print("created file list with %u entries" % len(self.filelist))
def parseFilename(self, filename):
"""Get lat/lon values from filename."""
match = self.filename_regex.match(filename)
if match is None:
# TODO?: Raise exception?
- '''print ("Filename", filename, "unrecognized!")'''
+ '''print "Filename", filename, "unrecognized!"'''
return None
lat = int(match.group(2))
lon = int(match.group(4))
@@ -206,10 +206,10 @@ def getTile(self, lat, lon):
only returns SRTM3 objects."""
global childFileListDownload
if childFileListDownload is not None and childFileListDownload.is_alive():
- '''print ("Getting file list")'''
+ '''print "Getting file list"'''
return 0
elif not self.filelist:
- '''print ("Filelist download complete, loading data")'''
+ '''print "Filelist download complete, loading data"'''
data = open(self.filelist_file, 'rb')
self.filelist = pickle.load(data)
data.close()
@@ -217,7 +217,7 @@ def getTile(self, lat, lon):
try:
continent, filename = self.filelist[(int(lat), int(lon))]
except KeyError:
- '''print ("here??")'''
+ '''print "here??"'''
if len(self.filelist) > self.min_filelist_len:
# we appear to have a full filelist - this must be ocean
return SRTMOceanTile(int(lat), int(lon))
@@ -232,10 +232,10 @@ def getTile(self, lat, lon):
except Exception as ex:
childTileDownload = None
return 0
- '''print ("Getting Tile")'''
+ '''print "Getting Tile"'''
return 0
elif childTileDownload is not None and childTileDownload.is_alive():
- '''print ("Still Getting Tile")'''
+ '''print "Still Getting Tile"'''
return 0
# TODO: Currently we create a new tile object each time.
# Caching is required for improved performance.
@@ -249,7 +249,7 @@ def downloadTile(self, continent, filename):
mp_util.child_close_fds()
if self.offline == 1:
return
- conn = httplib.HTTPConnection(self.server)
+ conn = http.client.HTTPConnection(self.server)
conn.set_debuglevel(0)
filepath = "%s%s%s" % \
(self.directory,continent,filename)
@@ -257,15 +257,15 @@ def downloadTile(self, continent, filename):
conn.request("GET", filepath)
r1 = conn.getresponse()
if r1.status==200:
- '''print ("status200 received ok")'''
+ '''print "status200 received ok"'''
data = r1.read()
self.ftpfile = open(os.path.join(self.cachedir, filename), 'wb')
self.ftpfile.write(data)
self.ftpfile.close()
self.ftpfile = None
else:
- '''print ("oh no = status=%d %s" \
- % (r1.status,r1.reason))'''
+ '''print "oh no = status=%d %s" \
+ % (r1.status,r1.reason)'''
except Exception as e:
if not self.first_failure:
#print("SRTM Download failed: %s" % str(e))
@@ -285,7 +285,7 @@ def __init__(self, f, lat, lon):
try:
zipf = zipfile.ZipFile(f, 'r')
except Exception:
- raise InvalidTileError(lat, lon)
+ raise InvalidTileError(lat, lon)
names = zipf.namelist()
if len(names) != 1:
raise InvalidTileError(lat, lon)
@@ -340,7 +340,7 @@ def getPixelValue(self, x, y):
assert y < self.size, "y: %d<%d" % (y, self.size)
# Same as calcOffset, inlined for performance reasons
offset = x + self.size * (self.size - y - 1)
- #print (offset)
+ #print offset
value = self.data[offset]
if value == -32768:
return -1 # -32768 is a special value for areas with no data
@@ -351,20 +351,20 @@ def getAltitudeFromLatLon(self, lat, lon):
"""Get the altitude of a lat lon pair, using the four neighbouring
pixels for interpolation.
"""
- # print ("-----\nFromLatLon", lon, lat)
+ # print "-----\nFromLatLon", lon, lat
lat -= self.lat
lon -= self.lon
- # print ("lon, lat", lon, lat)
+ # print "lon, lat", lon, lat
if lat < 0.0 or lat >= 1.0 or lon < 0.0 or lon >= 1.0:
raise WrongTileError(self.lat, self.lon, self.lat+lat, self.lon+lon)
x = lon * (self.size - 1)
y = lat * (self.size - 1)
- # print ("x,y", x, y)
+ # print "x,y", x, y
x_int = int(x)
x_frac = x - int(x)
y_int = int(y)
y_frac = y - int(y)
- # print ("frac", x_int, x_frac, y_int, y_frac)
+ # print "frac", x_int, x_frac, y_int, y_frac
value00 = self.getPixelValue(x_int, y_int)
value10 = self.getPixelValue(x_int+1, y_int)
value01 = self.getPixelValue(x_int, y_int+1)
@@ -372,8 +372,8 @@ def getAltitudeFromLatLon(self, lat, lon):
value1 = self._avg(value00, value10, x_frac)
value2 = self._avg(value01, value11, x_frac)
value = self._avg(value1, value2, y_frac)
- # print ("%4d %4d | %4d\n%4d %4d | %4d\n-------------\n%4d" % (
- # value00, value10, value1, value01, value11, value2, value))
+ # print "%4d %4d | %4d\n%4d %4d | %4d\n-------------\n%4d" % (
+ # value00, value10, value1, value01, value11, value2, value)
return value
class SRTMOceanTile(SRTMTile):
@@ -389,7 +389,7 @@ def getAltitudeFromLatLon(self, lat, lon):
class parseHTMLDirectoryListing(HTMLParser):
def __init__(self):
- #print ("parseHTMLDirectoryListing.__init__")
+ #print "parseHTMLDirectoryListing.__init__"
HTMLParser.__init__(self)
self.title="Undefined"
self.isDirListing = False
@@ -400,7 +400,7 @@ def __init__(self):
self.currHref=""
def handle_starttag(self, tag, attrs):
- #print ("Encountered the beginning of a %s tag" % tag)
+ #print "Encountered the beginning of a %s tag" % tag
if tag=="title":
self.inTitle = True
if tag == "a":
@@ -412,7 +412,7 @@ def handle_starttag(self, tag, attrs):
def handle_endtag(self, tag):
- #print ("Encountered the end of a %s tag" % tag)
+ #print "Encountered the end of a %s tag" % tag
if tag=="title":
self.inTitle = False
if tag == "a":
@@ -426,9 +426,9 @@ def handle_endtag(self, tag):
def handle_data(self,data):
if self.inTitle:
self.title = data
- '''print ("title=%s" % data)'''
+ '''print "title=%s" % data'''
if "Index of" in self.title:
- #print ("it is an index!!!!")
+ #print "it is an index!!!!"
self.isDirListing = True
if self.inHyperLink:
# We do not include parent directory in listing.
@@ -444,6 +444,3 @@ def getDirListing(self):
downloader.loadFileList()
tile = downloader.getTile(-36, 149)
print (tile.getAltitudeFromLatLon(-35.282, 149.1287))
-
-
-
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misc.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misc.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misc.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misc.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/__init__.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/__init__.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/button_renderer.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/button_renderer.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/button_renderer.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/button_renderer.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/me_defines.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/me_defines.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/me_defines.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/me_defines.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/me_event.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/me_event.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/me_event.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/me_event.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/missionEditor.wxg b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/missionEditor.wxg
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/missionEditor.wxg
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/missionEditor.wxg
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/missionEditorFrame.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/missionEditorFrame.py
similarity index 97%
rename from src/drivers/MAVLinkServer/modules/mavproxy_misseditor/missionEditorFrame.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/missionEditorFrame.py
index 73a680e9e..3e4db3445 100755
--- a/src/drivers/MAVLinkServer/modules/mavproxy_misseditor/missionEditorFrame.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_misseditor/missionEditorFrame.py
@@ -25,7 +25,7 @@
ME_P2_COL = 2
ME_P3_COL = 3
ME_P4_COL = 4
-ME_LAT_COL = 5
+ME_LAT_COL = 5
ME_LON_COL = 6
ME_ALT_COL = 7
ME_FRAME_COL = 8
@@ -228,7 +228,7 @@ def time_to_process_gui_events(self, evt):
if event.get_type() == me_event.MEGE_CLEAR_MISS_TABLE:
self.grid_mission.ClearGrid()
if (self.grid_mission.GetNumberRows() > 0):
- self.grid_mission.DeleteRows(0,
+ self.grid_mission.DeleteRows(0,
self.grid_mission.GetNumberRows())
self.grid_mission.SetDefaultColSize(50, True)
self.grid_mission.SetColSize(ME_COMMAND_COL, 150)
@@ -260,29 +260,29 @@ def time_to_process_gui_events(self, evt):
else: #not the first mission item
if (me_defines.miss_cmds.has_key(command)):
- self.grid_mission.SetCellValue(row, ME_COMMAND_COL,
+ self.grid_mission.SetCellValue(row, ME_COMMAND_COL,
me_defines.miss_cmds[command])
else:
self.grid_mission.SetCellValue(row, ME_COMMAND_COL,
str(command))
- self.grid_mission.SetCellValue(row, ME_P1_COL,
+ self.grid_mission.SetCellValue(row, ME_P1_COL,
str(event.get_arg("param1")))
- self.grid_mission.SetCellValue(row, ME_P2_COL,
+ self.grid_mission.SetCellValue(row, ME_P2_COL,
str(event.get_arg("param2")))
- self.grid_mission.SetCellValue(row, ME_P3_COL,
+ self.grid_mission.SetCellValue(row, ME_P3_COL,
str(event.get_arg("param3")))
- self.grid_mission.SetCellValue(row, ME_P4_COL,
+ self.grid_mission.SetCellValue(row, ME_P4_COL,
str(event.get_arg("param4")))
- self.grid_mission.SetCellValue(row, ME_LAT_COL,
+ self.grid_mission.SetCellValue(row, ME_LAT_COL,
str(event.get_arg("lat")))
- self.grid_mission.SetCellValue(row, ME_LON_COL,
+ self.grid_mission.SetCellValue(row, ME_LON_COL,
str(event.get_arg("lon")))
- self.grid_mission.SetCellValue(row, ME_ALT_COL,
+ self.grid_mission.SetCellValue(row, ME_ALT_COL,
"%.2f" % event.get_arg("alt"))
- frame_num = event.get_arg("frame")
- if (me_defines.frame_enum.has_key(frame_num)):
+ frame_num = event.get_arg("frame")
+ if (me_defines.frame_enum.has_key(frame_num)):
self.grid_mission.SetCellValue(row, ME_FRAME_COL,
me_defines.frame_enum[frame_num])
else:
@@ -293,7 +293,7 @@ def time_to_process_gui_events(self, evt):
self.text_ctrl_wp_radius.SetValue(str(event.get_arg("wp_rad")))
self.text_ctrl_wp_radius.SetForegroundColour(wx.Colour(0, 0, 0))
elif event.get_type() == me_event.MEGE_SET_LOIT_RAD:
- loiter_radius = event.get_arg("loit_rad")
+ loiter_radius = event.get_arg("loit_rad")
self.text_ctrl_loiter_radius.SetValue(
str(math.fabs(loiter_radius)))
self.text_ctrl_loiter_radius.SetForegroundColour(wx.Colour(0, 0, 0))
@@ -306,19 +306,19 @@ def time_to_process_gui_events(self, evt):
event.get_arg("def_wp_alt")))
self.text_ctrl_wp_default_alt.SetForegroundColour(wx.Colour(0, 0, 0))
elif event.get_type() == me_event.MEGE_SET_LAST_MAP_CLICK_POS:
- self.last_map_click_pos = event.get_arg("click_pos")
+ self.last_map_click_pos = event.get_arg("click_pos")
self.gui_event_queue_lock.release()
-
+
if (event_processed == True):
#redraw window to apply changes
self.Refresh()
self.Update()
-
+
def prep_new_row(self, row_num):
command_choices = me_defines.miss_cmds.values()
command_choices.sort()
-
+
cell_ed = wx.grid.GridCellChoiceEditor(command_choices)
self.grid_mission.SetCellEditor(row_num, ME_COMMAND_COL, cell_ed)
self.grid_mission.SetCellValue(row_num, ME_COMMAND_COL, "NAV_WAYPOINT")
@@ -327,7 +327,7 @@ def prep_new_row(self, row_num):
self.grid_mission.SetCellValue(row_num, i, "0.0")
#set altitude to default:
- self.grid_mission.SetCellValue(row_num, ME_ALT_COL,
+ self.grid_mission.SetCellValue(row_num, ME_ALT_COL,
self.text_ctrl_wp_default_alt.GetValue())
#populate frm cell editor and set to default value
@@ -347,7 +347,7 @@ def prep_new_row(self, row_num):
#this makes newest row always have the cursor in it,
#making the "Add Below" button work like I want:
self.grid_mission.SetGridCursor(row_num, ME_COMMAND_COL)
-
+
def prep_new_rows(self, start_row, num_rows):
num_remaining = num_rows
current_row = start_row
@@ -372,7 +372,7 @@ def read_wp_pushed(self, event): # wxGlade: MissionEditorFrame.
self.event_queue.put(MissionEditorEvent(me_event.MEE_GET_WP_RAD))
self.event_queue.put(MissionEditorEvent(me_event.MEE_GET_LOIT_RAD))
self.event_queue.put(MissionEditorEvent(me_event.MEE_GET_WP_DEFAULT_ALT))
-
+
self.event_queue_lock.release()
event.Skip()
@@ -391,7 +391,7 @@ def write_wp_pushed(self, event): # wxGlade: MissionEditorFrame.
self.event_queue.put(MissionEditorEvent(me_event.MEE_WRITE_WP_NUM,
num=0,cmd_id=16,p1=0.0,p2=0.0,p3=0.0,p4=0.0,
lat=lat,lon=lon,alt=alt,frame=0))
-
+
for i in range(0, self.grid_mission.GetNumberRows()):
cmd_id = me_defines.cmd_reverse_lookup(self.grid_mission.GetCellValue(i,0))
#don't lock up the misseditor on missing input!
@@ -427,8 +427,8 @@ def write_wp_pushed(self, event): # wxGlade: MissionEditorFrame.
try:
frame = float(me_defines.frame_enum_rev[self.grid_mission.GetCellValue(i,ME_FRAME_COL)])
except:
- frame = 0.0
-
+ frame = 0.0
+
self.event_queue.put(MissionEditorEvent(me_event.MEE_WRITE_WP_NUM,
num=i+1,cmd_id=cmd_id,p1=p1,p2=p2,p3=p3,p4=p4,
lat=lat,lon=lon,alt=alt,frame=frame))
@@ -444,21 +444,21 @@ def load_wp_file_pushed(self, event): # wxGlade: MissionEditorFrame.
row_selected = self.grid_mission.GetGridCursorRow()
if (row_selected < 0):
row_selected = self.grid_mission.GetNumberRows()-1
-
+
self.grid_mission.InsertRows(row_selected+1)
self.prep_new_row(row_selected+1)
@@ -467,12 +467,12 @@ def add_wp_below_pushed(self, event): # wxGlade: MissionEditorFrame.
@@ -487,7 +487,7 @@ def save_wp_file_pushed(self, event): # wxGlade: MissionEditorFrame.
#delete column?
if (event.GetCol() == ME_DELETE_COL):
row = event.GetRow()
dlg = wx.MessageDialog(self, 'Sure you want to delete item ' + str(row+1) + '?', 'Really Delete?', wx.YES_NO | wx.ICON_EXCLAMATION)
result = dlg.ShowModal()
-
+
if (result == wx.ID_YES):
#delete this row
self.grid_mission.DeleteRows(row)
@@ -525,7 +525,7 @@ def on_mission_grid_cell_left_click(self, event): # wxGlade: MissionEditorFrame
if (row == 0): #can't go any higher
return
#insert a copy of this row above the previous row, then delete this row
- self.grid_mission.InsertRows(row-1)
+ self.grid_mission.InsertRows(row-1)
self.prep_new_row(row-1)
for i in range(0, self.grid_mission.GetNumberCols()):
self.grid_mission.SetCellValue(row-1, i,
@@ -536,7 +536,7 @@ def on_mission_grid_cell_left_click(self, event): # wxGlade: MissionEditorFrame
self.grid_mission.SelectRow(row-1)
self.set_modified_state(True)
-
+
#Return so we don't skip the event so the cursor will go where expected
return
@@ -562,11 +562,11 @@ def on_mission_grid_cell_left_click(self, event): # wxGlade: MissionEditorFrame
#Return so we don't skip the event so the cursor will go where expected
return
-
+
event.Skip()
def on_mission_grid_cell_changed(self, event): # wxGlade: MissionEditorFrame.
- self.set_modified_state(True)
+ self.set_modified_state(True)
event.Skip()
def on_wp_radius_changed(self, event): # wxGlade: MissionEditorFrame.
#change text red
@@ -609,7 +609,7 @@ def send_loiter_rad_msg(self):
self.event_queue_lock.release()
def on_loiter_rad_enter(self, event): # wxGlade: MissionEditorFrame.
- self.send_loiter_rad_msg()
+ self.send_loiter_rad_msg()
event.Skip()
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/__init__.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/__init__.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/bing.js b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/bing.js
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/bing.js
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/bing.js
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/bluemarble.js b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/bluemarble.js
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/bluemarble.js
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/bluemarble.js
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/drone-md.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/drone-md.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/drone-md.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/drone-md.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/drone-sm.png b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/drone-sm.png
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/drone-sm.png
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/drone-sm.png
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/index.html b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/index.html
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/index.html
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/index.html
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/modestmaps.js b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/modestmaps.js
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_app/modestmaps.js
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_app/modestmaps.js
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_server.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_server.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mmap/mmap_server.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mmap/mmap_server.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_mode.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mode.py
similarity index 86%
rename from src/drivers/MAVLinkServer/modules/mavproxy_mode.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mode.py
index 164994ab3..c3d893c47 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_mode.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_mode.py
@@ -9,7 +9,7 @@
class ModeModule(mp_module.MPModule):
def __init__(self, mpstate):
super(ModeModule, self).__init__(mpstate, "mode")
- self.add_command('mode', self.cmd_mode, "mode change", self.available_modes())
+ self.add_command('mode', self.cmd_mode, "mode change")
self.add_command('guided', self.cmd_guided, "fly to a clicked location on map")
def cmd_mode(self, args):
@@ -31,13 +31,6 @@ def cmd_mode(self, args):
modenum = mode_mapping[mode]
self.master.set_mode(modenum)
- def available_modes(self):
- mode_mapping = self.master.mode_mapping()
- if mode_mapping is None:
- print('No mode mapping available')
- return []
- return mode_mapping.keys()
-
def unknown_command(self, args):
'''handle mode switch by mode name as command'''
mode_mapping = self.master.mode_mapping()
@@ -52,7 +45,7 @@ def cmd_guided(self, args):
if len(args) != 1 and len(args) != 3:
print("Usage: guided ALTITUDE | guided LAT LON ALTITUDE")
return
-
+
if len(args) == 3:
latitude = float(args[0])
longitude = float(args[1])
@@ -66,10 +59,10 @@ def cmd_guided(self, args):
return
if latlon is None:
print("No map click position available")
- return
+ return
altitude = int(args[0])
-
- print("Guided %s %d" % (str(latlon), altitude))
+
+ #print("Guided %s %d" % (str(latlon), altitude))
self.master.mav.mission_item_send (self.settings.target_system,
self.settings.target_component,
0,
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_nsh.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_nsh.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_nsh.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_nsh.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_output.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_output.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_output.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_output.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_param.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_param.py
similarity index 97%
rename from src/drivers/MAVLinkServer/modules/mavproxy_param.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_param.py
index 285ec5f8f..5de2bf372 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_param.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_param.py
@@ -105,12 +105,6 @@ def param_help(self, args):
help = htree[h]
print("%s: %s\n" % (h, help.get('humanName')))
print(help.get('documentation'))
- try:
- print("\n")
- for f in help.field:
- print("%s : %s" % (f.get('name'), str(f)))
- except Exception as e:
- pass
try:
vchild = help.getchildren()[0]
print("\nValues: ")
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_ppp.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_ppp.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_ppp.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_ppp.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_rally.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rally.py
similarity index 99%
rename from src/drivers/MAVLinkServer/modules/mavproxy_rally.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rally.py
index 8ef113f88..c0c380b48 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_rally.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rally.py
@@ -83,10 +83,10 @@ def cmd_rally_add(self, args):
if len(args) < 3:
flag = self.settings.rally_flags
- else:
+ else:
flag = int(args[2])
#currently only supporting autoland values:
- #True (nonzero) and False (zero)
+ #True (nonzero) and False (zero)
if (flag != 0):
flag = 2
@@ -106,9 +106,9 @@ def cmd_rally_add(self, args):
if latlon is None:
print("No map click position available")
return
-
+
land_hdg = 0.0
-
+
self.rallyloader.create_and_append_rally_point(latlon[0] * 1e7, latlon[1] * 1e7, alt, break_alt, land_hdg, flag)
self.send_rally_points()
print("Added Rally point at %s %f %f, autoland: %s" % (str(latlon), alt, break_alt, bool(flag & 2)))
@@ -121,7 +121,7 @@ def cmd_rally_alt(self, args):
if not self.have_list:
print("Please list rally points first")
return
-
+
idx = int(args[0])
if idx <= 0 or idx > self.rallyloader.rally_count():
print("Invalid rally point number %u" % idx)
@@ -311,7 +311,7 @@ def list_rally_points(self):
for i in range(self.rallyloader.rally_count()):
p = self.rallyloader.rally_point(i)
self.console.writeln("lat=%f lng=%f alt=%f break_alt=%f land_dir=%f autoland=%f" % (p.lat * 1e-7, p.lng * 1e-7, p.alt, p.break_alt, p.land_dir, int(p.flags & 2!=0) ))
-
+
if self.logdir != None:
ral_file_path = os.path.join(self.logdir, 'ral.txt')
self.rallyloader.save(ral_file_path)
@@ -319,7 +319,7 @@ def list_rally_points(self):
def print_usage(self):
print("Usage: rally ")
-
+
def init(mpstate):
'''initialise module'''
return RallyModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_rc.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rc.py
similarity index 91%
rename from src/drivers/MAVLinkServer/modules/mavproxy_rc.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rc.py
index 9806789bd..18e9dbb56 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_rc.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rc.py
@@ -8,8 +8,8 @@
class RCModule(mp_module.MPModule):
def __init__(self, mpstate):
super(RCModule, self).__init__(mpstate, "rc", "rc command handling", public = True)
- self.override = [ 0 ] * 16
- self.last_override = [ 0 ] * 16
+ self.override = [ 0 ] * 8
+ self.last_override = [ 0 ] * 8
self.override_counter = 0
self.add_command('rc', self.cmd_rc, "RC input control", ['<1|2|3|4|5|6|7|8|all>'])
self.add_command('switch', self.cmd_switch, "flight mode switch control", ['<0|1|2|3|4|5|6>'])
@@ -20,7 +20,7 @@ def __init__(self, mpstate):
def idle_task(self):
if self.override_period.trigger():
- if (self.override != [ 0 ] * 16 or
+ if (self.override != [ 0 ] * 8 or
self.override != self.last_override or
self.override_counter > 0):
self.last_override = self.override[:]
@@ -31,14 +31,13 @@ def idle_task(self):
def send_rc_override(self):
'''send RC override packet'''
if self.sitl_output:
- buf = struct.pack(' 16:
+ channels[channel - 1] = value
+ if channel < 1 or channel > 8:
print("Channel must be between 1 and 8 or 'all'")
return
- channels[channel - 1] = value
self.set_override(channels)
def init(mpstate):
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_rcsetup.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rcsetup.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_rcsetup.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_rcsetup.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_relay.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_relay.py
similarity index 92%
rename from src/drivers/MAVLinkServer/modules/mavproxy_relay.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_relay.py
index 8f80a6f12..fda43bba1 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_relay.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_relay.py
@@ -63,18 +63,14 @@ def cmd_servo(self, args):
def cmd_motortest(self, args):
'''run motortests on copter'''
- if len(args) < 4:
- print("Usage: motortest motornum type value timeout ")
+ if len(args) != 4:
+ print("Usage: motortest motornum type value timeout")
return
- if len(args) == 5:
- count = int(args[4])
- else:
- count = 0
self.master.mav.command_long_send(self.target_system,
0,
mavutil.mavlink.MAV_CMD_DO_MOTOR_TEST, 0,
- int(args[0]), int(args[1]), int(args[2]), int(args[3]), count,
- 0, 0)
+ int(args[0]), int(args[1]), int(args[2]), int(args[3]),
+ 0, 0, 0)
def init(mpstate):
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_sensors.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_sensors.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_sensors.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_sensors.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_serial.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_serial.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_serial.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_serial.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/__init__.py
similarity index 98%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/__init__.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/__init__.py
index 6bac330a3..bcdc0f2fc 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/__init__.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/__init__.py
@@ -285,10 +285,10 @@ def __vCmdSetCamISO(self, args):
'''ToDo: Validate CAM number and Valid ISO Value'''
if len(args) == 1:
for cam in self.camera_list:
- cam.boSetISO(args[0])
+ cam.boSetISO(int(args[0]))
elif len(args) == 2:
cam = self.camera_list[int(args[1])]
- cam.boSetISO(args[0])
+ cam.boSetISO(int(args[0]))
else:
print ("Usage: setCamISO ISOVALUE [CAMNUMBER]")
@@ -433,12 +433,6 @@ def __vDecodeDIGICAMControl(self, mCommand_Long):
def mavlink_packet(self, m):
'''handle a mavlink packet'''
mtype = m.get_type()
- if mtype == "GLOBAL_POSITION_INT":
- for cam in self.camera_list:
- cam.boSet_GPS(m)
- if mtype == "ATTITUDE":
- for cam in self.camera_list:
- cam.boSet_Attitude(m)
if mtype == "CAMERA_STATUS":
print ("Got Message camera_status")
if mtype == "CAMERA_FEEDBACK":
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_SonyQX1.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_SonyQX1.py
similarity index 72%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_SonyQX1.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_SonyQX1.py
index 73263fd3b..aba529b50 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_SonyQX1.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_SonyQX1.py
@@ -25,8 +25,7 @@
#****************************************************************************
# System Header files and Module Headers
-import os, sys, time, math, cv2, struct, fcntl
-from datetime import datetime
+import sys, time, math, cv2, struct, fcntl
# Module Dependent Headers
import requests, json, socket, StringIO
@@ -35,15 +34,6 @@
# Own Headers
import ssdp
-#****************************************************************************
-# Constants
-#****************************************************************************
-
-# Target Initial Camera Values
-targetShutterSpeed = 1600
-targetAperture = 120
-targetISOValue = "AUTO"
-
#****************************************************************************
# Class name : SmartCamera_SonyQX
#
@@ -84,33 +74,20 @@ def __init__(self, u8Instance, sNetInterface):
# record instance
self.u8Instance = u8Instance
self.sConfigGroup = "Camera%d" % self.u8Instance
-
+
# background image processing variables
self.u32ImgCounter = 0 # num images requested so far
# latest image captured
self.sLatestImageURL = None # String with the URL to the latest image
-
- # latest image downloaded
- self.sLatestImageFilename = None #String with the Filename for the last downloaded image
- self.sLatestFileName = None #String with the camera file name for the last image taken
-
- self.vehicleLat = 0.0 # Current Vehicle Latitude
- self.vehicleLon = 0.0 # Current Vehicle Longitude
- self.vehicleHdg = 0.0 # Current Vehicle Heading
- self.vehicleAMSL = 0.0 # Current Vehicle Altitude above mean sea level
-
- self.vehicleRoll = 0.0 # Current Vehicle Roll
- self.vehiclePitch = 0.0 # Current Vehicle Pitch
+ # latest image downloaded
+ self.sLatestImageFilename = None #String with the file name for the last downloaded image
# Look Camera and Get URL
self.sCameraURL = self.__sFindCameraURL(sNetInterface)
if self.sCameraURL is None:
print("No QX camera found, failed to open QX camera %d" % self.u8Instance)
- else:
- self.__openGeoTagLogFile() # open geoTag Log
- self.boCameraInitialSetup() # Setup Initial camera parameters
#****************************************************************************
# Method Name : __str__
@@ -129,175 +106,6 @@ def __init__(self, u8Instance, sNetInterface):
def __str__(self):
return "SmartCameraSonyQX Object for %s" % self.sConfigGroup
-#****************************************************************************
-# Method Name : boCameraInitialSetup
-#
-# Description : Sets Initial Camera Parameters
-#
-# Parameters : None
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def boCameraInitialSetup(self):
- print("Setting up Camera Initial Parameters")
- # Check if we need to do 'startRecMode'
- APIList = self.__sSimpleCall("getAvailableApiList")
-
- # For those cameras which need it
- if 'startRecMode' in (APIList['result'])[0]:
- print("Need to send startRecMode, sending and waiting 5 sec...")
- self.__sSimpleCall("startRecMode")
- time.sleep(1)
- print("4 sec")
- time.sleep(1)
- print("3 sec")
- time.sleep(1)
- print("2 sec")
- time.sleep(1)
- print("1 sec")
- time.sleep(1)
-
- # Set Postview Size to Orignial size to get real image filename
- sResponse = self.__sSimpleCall("setPostviewImageSize", adictParams=["Original"])
-
- # Set Mode to Shutter Priority if available
- SupportedModes = self.__sSimpleCall("getSupportedExposureMode")
- if 'Shutter' in (SupportedModes['result'])[0]:
- self.boSetExposureMode("Shutter")
- #elif 'Manual' in (SupportedModes['result'])[0]:
- # self.boSetExposureMode("Manual")
- else:
- print("Error no Shutter Priority Mode")
-
- # Set Target Shutter Speed
- self.boSetShutterSpeed(targetShutterSpeed)
-
- # Set Target ISO Value
- self.boSetISO(targetISOValue)
-
-#****************************************************************************
-# Method Name : boSet_GPS
-#
-# Description : Gets the GPS Position from the provided message
-#
-# Parameters : mGPSMessage GPS Mavlink Message type
-#
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def boSet_GPS(self, mGPSMessage):
- if mGPSMessage.get_type() == 'GLOBAL_POSITION_INT':
- (self.vehicleLat, self.vehicleLon, self.vehicleHdg, self.vehicleAMSL) = (m.lat*1.0e-7, m.lon*1.0e-7, m.hdg*0.01, m.alt*0.001)
-
-#****************************************************************************
-# Method Name : boSet_Attitude
-#
-# Description : Gets the vehicle attitude from the provided message
-#
-# Parameters : mAttitudeMessage MAVlink Attitude Message type
-#
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def boSet_Attitude(self, mAttitudeMessage):
- if mAttitudeMessage.get_type() == 'ATTITUDE':
- (self.vehicleRoll, self.vehiclePitch) = (math.degrees(m.roll), math.degrees(m.pitch))
-
-#****************************************************************************
-# Method Name : __geoRef_write
-#
-# Description : Writes GeoReference to file
-#
-# Parameters : sImageFileName File name of image to be entered into the log
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
-
- # Geo reference log for all the GoPro pictures
- def __geoRef_write(self, sImageFileName):
- #self.geoRef_writer.write(datetime.now().strftime('%d-%m-%Y %H:%M:%S.%f')[:-3])
- self.geoRef_writer.write(sImageFileName)
- self.geoRef_writer.write(",%f,%f,%f,%f,%f,%f" % (self.vehicleLat, self.vehicleLon, self.vehicleAMSL, self.vehicleRoll, self.vehiclePitch,self.vehicleHdg))
- self.geoRef_writer.write('\n')
- self.geoRef_writer.flush()
-
-#****************************************************************************
-# Method Name : get_real_Yaw
-#
-# Description : Helper method to get the real Yaw
-#
-# Parameters : yaw Vehicle Yaw
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def get_real_Yaw(self, yaw):
- if (yaw < 0):
- return yaw+360
- return yaw
-
-#****************************************************************************
-# Method Name : __writeGeoRefToFile
-#
-# Description : Writes the Georeference of the image to the log. NOT SURE
-# IF IT IS DUPLICATED FOR A GOOD REASON.
-#
-# Parameters : sImageFileName1 Image file name
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def __writeGeoRefToFile(self, sImageFileName1):
- self.__geoRef_write(sImageFileName1)
-
-#****************************************************************************
-# Method Name : __openGeoTagLogFile
-#
-# Description : Checks for existing log files and creates a new Log file
-# with an incremented index number
-#
-# Parameters : None
-#
-# Return Value : None
-#
-# Autor : Jaime Machuca
-#
-#****************************************************************************
-
- def __openGeoTagLogFile(self):
- #Open GeoTag Log File
- i = 0
- while os.path.exists('/sdcard/log/geoRef%s.log' % i):
- print('checking /sdcard/log/geoRef%s.log' % i)
- i += 1
-
- self.geoRef_writer = open('/sdcard/log/geoRef%s.log' % i, 'w', 0)
- self.geoRef_writer.write('Filename, Latitude, Longitude, Alt (AMSL), Roll, Pitch, Yaw\n')
-
- print('Opened GeoTag Log File with Filename: geoRef%s.log' % i)
-
#****************************************************************************
# Method Name : __sFindInterfaceIPAddress
#
@@ -341,7 +149,7 @@ def __sMakeCall(self, sService, adictPayload):
data=sData,
headers=adictHeaders).json()
return sResponse
-
+
#****************************************************************************
# Method Name : __sSimpleCall
#
@@ -391,10 +199,10 @@ def __sFindCameraURL(self, sInterface):
if len(sRet) == 0:
return None
sDMS_URL = sRet[0].location
-
+
print("Fetching DMS from %s" % sDMS_URL)
xmlReq = requests.request('GET', sDMS_URL)
-
+
xmlTree = ET.ElementTree(file=StringIO.StringIO(xmlReq.content))
for xmlElem in xmlTree.iter():
if xmlElem.tag == '{urn:schemas-sony-com:av}X_ScalarWebAPI_ActionList_URL':
@@ -422,7 +230,6 @@ def boValidCameraFound(self):
print ("Checking URL at %s" % self.sCameraURL)
if self.sCameraURL is None:
return False
-
return True
#****************************************************************************
@@ -466,7 +273,7 @@ def boGetLatestImage(self):
def sGetLatestImageFilename(self):
return self.sLatestImageFilename
-
+
#****************************************************************************
# Method Name : u32GetImageCounter
#
@@ -501,12 +308,12 @@ def boZoomIn(self):
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("actZoom", adictParams=["in","1shot"])
-
+
# Check response for a succesful result
if 'result' in sResponse:
print ("Zoomed in")
return True
-
+
# In case of an error, return false
print ("Failed to Zoom")
return False
@@ -526,10 +333,10 @@ def boZoomIn(self):
#****************************************************************************
def boZoomOut(self):
-
+
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("actZoom", adictParams=["out","1shot"])
-
+
# Check response for a succesful result
if 'result' in sResponse:
print ("Zoomed out")
@@ -557,19 +364,19 @@ def boZoomOut(self):
def boSetExposureMode(self,sExposureMode):
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("setExposureMode", adictParams=[sExposureMode])
-
+
# Check response for a succesful result
if 'result' in sResponse:
time.sleep(0.25)
sResponse = self.__sSimpleCall("getExposureMode")
-
+
if sExposureMode not in sResponse["result"]:
print ("Failed to set Exposure Mode, current value: %s" %sResponse["result"])
return False
-
+
print ("Exposure Mode set to %s" % sExposureMode)
return True
-
+
# In case of an error, return false
print ("Failed to set Exposure Mode")
return False
@@ -596,19 +403,19 @@ def boSetShutterSpeed(self,u16ShutterSpeed):
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("setShutterSpeed", adictParams=[sShutterSpeed])
-
+
# Check response for a succesful result
if 'result' in sResponse:
time.sleep(0.25)
sResponse = self.__sSimpleCall("getShutterSpeed")
-
+
if sShutterSpeed not in sResponse["result"]:
print ("Failed to set Shutter Speed, current value: %s" %sResponse["result"])
return False
print ("Shutter Speed set to %s" % sShutterSpeed)
return True
-
+
# In case of an error, return false
print ("Failed to set Shutter Speed")
return False
@@ -635,19 +442,19 @@ def boSetAperture(self,u8Aperture):
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("setFNumber", adictParams=[sFValue])
-
+
# Check response for a succesful result
if 'result' in sResponse:
time.sleep(0.25)
sResponse = self.__sSimpleCall("getFNumber")
-
+
if sFValue not in sResponse["result"]:
print ("Failed to set aperture, current value: %s" %sResponse["result"])
return False
-
+
print ("Aperture set to %s" % sFValue)
return True
-
+
# In case of an error, return false
print ("Failed to set aperture")
return False
@@ -670,10 +477,10 @@ def boSetAperture(self,u8Aperture):
def boSetISO(self,u16ISO):
# Create ISO String
sISO = str(u16ISO)
-
+
# Send command to set Exposure Mode
sResponse = self.__sSimpleCall("setIsoSpeedRate", adictParams=[sISO])
-
+
# Check response for a succesful result
if 'result' in sResponse:
sResponse = self.__sSimpleCall("getIsoSpeedRate")
@@ -681,10 +488,10 @@ def boSetISO(self,u16ISO):
if sISO not in sResponse["result"]:
print ("Failed to Set ISO, current value: %s" %sResponse["result"])
return False
-
+
print ("ISO set to %s" % sISO)
return True
-
+
# In case of an error, return false
print ("Failed to Set ISO")
return False
@@ -705,7 +512,6 @@ def boSetISO(self,u16ISO):
#****************************************************************************
def __boAddGeotagToLog(self, sImageFileName):
- self.__writeGeoRefToFile(sImageFileName)
return True
#****************************************************************************
@@ -729,14 +535,7 @@ def boTakePicture(self):
# Check response for a succesful result and save latest image URL
if 'result' in sResponse:
self.sLatestImageURL = sResponse['result'][0][0]
-
- start = self.sLatestImageURL.find('DSC')
- end = self.sLatestImageURL.find('JPG', start) + 3
- self.sLatestFileName = self.sLatestImageURL[start:end]
- print("image URL: %s" % self.sLatestImageURL)
- print("image Name: %s" % self.sLatestFileName)
- self.__boAddGeotagToLog(self.sLatestFileName)
-
+ self.__boAddGeotagToLog(self.sLatestImageURL)
self.u32ImgCounter = self.u32ImgCounter+1
return True
@@ -768,12 +567,12 @@ def main(self):
cv2.imshow ('image_display', self.get_latest_image())
else:
print ("no image")
-
+
# check for ESC key being pressed
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
-
+
# take a rest for a bit
time.sleep(0.01)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_config.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_config.py
similarity index 98%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_config.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_config.py
index a7adfac4c..1452c8f56 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_config.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_config.py
@@ -33,7 +33,7 @@ def read(self):
except IOError as e:
print ('Error {0} reading config file: {1}: '.format(e.errno, e.strerror))
return
-
+
# save - saves the config to disk
def save(self):
try:
@@ -52,13 +52,13 @@ def check_section(self, section):
# get_boolean - returns the boolean found in the specified section/option or the default if not found
def get_boolean(self, section, option, default):
try:
- return self.parser.getboolean(section, option)
+ return self.parser.getboolean(section, option)
except ConfigParser.Error:
return default
# set_boolean - sets the boolean to the specified section/option
def set_boolean(self, section, option, new_value):
- self.check_section(section)
+ self.check_section(section)
self.parser.set(section, option, str(bool(new_value)))
return
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_main.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_main.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_main.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_main.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_video.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_video.py
similarity index 98%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_video.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_video.py
index 70532a22b..4ffeb8379 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_video.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_video.py
@@ -26,7 +26,7 @@ def __init__(self):
# get image center
self.img_center_x = self.img_width / 2
self.img_center_y = self.img_height / 2
-
+
# define field of view
self.cam_hfov = sc_config.config.get_float('camera','horizontal-fov',70.42)
self.cam_vfov = sc_config.config.get_float('camera','vertical-fov',43.3)
@@ -45,7 +45,7 @@ def __init__(self):
def __str__(self):
return "SmartCameraVideo Object W:%d H:%d" % (self.img_width, self.img_height)
- # get_camera - initialises camera and returns VideoCapture object
+ # get_camera - initialises camera and returns VideoCapture object
def get_camera(self):
# setup video capture
self.camera = cv2.VideoCapture(0)
@@ -65,24 +65,24 @@ def open_video_writer(self):
# Note: setting ex to -1 will display pop-up requesting user choose the encoder
ex = int(cv2.cv.CV_FOURCC('M','J','P','G'))
self.video_writer = cv2.VideoWriter(self.video_filename, ex, 25, (self.img_width,self.img_height))
-
+
return self.video_writer
- # pixels_to_angle_x - converts a number of pixels into an angle in radians
+ # pixels_to_angle_x - converts a number of pixels into an angle in radians
def pixels_to_angle_x(self, num_pixels):
return num_pixels * math.radians(self.cam_hfov) / self.img_width
-
- # pixels_to_angle_y - converts a number of pixels into an angle in radians
+
+ # pixels_to_angle_y - converts a number of pixels into an angle in radians
def pixels_to_angle_y(self, num_pixels):
return num_pixels * math.radians(self.cam_vfov) / self.img_height
-
+
# angle_to_pixels_x - converts a horizontal angle (i.e. yaw) to a number of pixels
# angle : angle in radians
def angle_to_pixels_x(self, angle):
return int(angle * self.img_width / math.radians(self.cam_hfov))
-
+
# angle_to_pixels_y - converts a vertical angle (i.e. pitch) to a number of pixels
- # angle : angle in radians
+ # angle : angle in radians
def angle_to_pixels_y(self, angle):
return int(angle * self.img_height / math.radians(self.cam_vfov))
@@ -167,19 +167,19 @@ def main(self):
while True:
# send request to image capture for image
img = self.get_image()
-
+
# check image is valid
if not img is None:
# display image
cv2.imshow ('image_display', img)
else:
print ("no image")
-
+
# check for ESC key being pressed
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
-
+
# take a rest for a bit
time.sleep(0.1)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_webcam.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_webcam.py
similarity index 95%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_webcam.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_webcam.py
index 6749c28cb..274505757 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/sc_webcam.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/sc_webcam.py
@@ -22,7 +22,7 @@ def __init__(self, instance):
self.healthy = False;
# record instance
- self.instance = instance
+ self.instance = instance
self.config_group = "camera%d" % self.instance
# get image resolution
@@ -46,7 +46,7 @@ def __init__(self, instance):
def __str__(self):
return "SmartCameraWebCam Object W:%d H:%d" % (self.img_width, self.img_height)
- # latest_image - returns latest image captured
+ # latest_image - returns latest image captured
def get_latest_image(self):
# write to file
#imgfilename = "C:\Users\rmackay9\Documents\GitHub\ardupilot-balloon-finder\smart_camera\img%d-%d.jpg" % (cam_num,cam.get_image_counter())
@@ -55,12 +55,12 @@ def get_latest_image(self):
cv2.imwrite(imgfilename, self.latest_image)
return self.latest_image
- # get_image_counter - returns number of images captured since startup
+ # get_image_counter - returns number of images captured since startup
def get_image_counter(self):
return self.img_counter
# take_picture - take a picture
- # returns True on success
+ # returns True on success
def take_picture(self):
# setup video capture
print("Taking Picture")
@@ -97,12 +97,12 @@ def main(self):
cv2.imshow ('image_display', self.get_latest_image())
else:
print ("no image")
-
+
# check for ESC key being pressed
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
-
+
# take a rest for a bit
time.sleep(0.01)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/smart_camera.cnf b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/smart_camera.cnf
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/smart_camera.cnf
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/smart_camera.cnf
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/ssdp.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/ssdp.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_smartcamera/ssdp.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_smartcamera/ssdp.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_speech.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_speech.py
similarity index 91%
rename from src/drivers/MAVLinkServer/modules/mavproxy_speech.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_speech.py
index 3f060aad7..979790750 100644
--- a/src/drivers/MAVLinkServer/modules/mavproxy_speech.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_speech.py
@@ -78,14 +78,6 @@ def say(self, text, priority='important'):
if self.settings.speech and self.say_backend is not None:
self.say_backend(text, priority=priority)
- def mavlink_packet(self, msg):
- '''handle an incoming mavlink packet'''
- type = msg.get_type()
- if type == "STATUSTEXT":
- # say some statustext values
- if msg.text.startswith("Tuning: "):
- self.say(msg.text[8:])
-
def init(mpstate):
'''initialise module'''
return SpeechModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_terrain.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_terrain.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_terrain.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_terrain.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_test.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_test.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_test.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_test.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_tracker.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_tracker.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_tracker.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_tracker.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_tuneopt.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_tuneopt.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_tuneopt.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_tuneopt.py
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_wp.py b/src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_wp.py
similarity index 100%
rename from src/drivers/MAVLinkServer/modules/mavproxy_wp.py
rename to src/drivers/MAVLinkServer/MAVProxy/modules/mavproxy_wp.py
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/DFReader.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/DFReader.py
new file mode 100644
index 000000000..2ff3369d6
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/DFReader.py
@@ -0,0 +1,703 @@
+#!/usr/bin/env python
+'''
+APM DataFlash log file reader
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+
+Partly based on SDLog2Parser by Anton Babushkin
+'''
+
+import struct, time, os
+from . import mavutil
+
+FORMAT_TO_STRUCT = {
+ "b": ("b", None, int),
+ "B": ("B", None, int),
+ "h": ("h", None, int),
+ "H": ("H", None, int),
+ "i": ("i", None, int),
+ "I": ("I", None, int),
+ "f": ("f", None, float),
+ "n": ("4s", None, str),
+ "N": ("16s", None, str),
+ "Z": ("64s", None, str),
+ "c": ("h", 0.01, float),
+ "C": ("H", 0.01, float),
+ "e": ("i", 0.01, float),
+ "E": ("I", 0.01, float),
+ "L": ("i", 1.0e-7, float),
+ "d": ("d", None, float),
+ "M": ("b", None, int),
+ "q": ("q", None, long),
+ "Q": ("Q", None, long),
+ }
+
+class DFFormat(object):
+ def __init__(self, type, name, flen, format, columns):
+ self.type = type
+ self.name = name
+ self.len = flen
+ self.format = format
+ self.columns = columns.split(',')
+
+ if self.columns == ['']:
+ self.columns = []
+
+ msg_struct = "<"
+ msg_mults = []
+ msg_types = []
+ for c in format:
+ if ord(c) == 0:
+ break
+ try:
+ (s, mul, type) = FORMAT_TO_STRUCT[c]
+ msg_struct += s
+ msg_mults.append(mul)
+ msg_types.append(type)
+ except KeyError as e:
+ raise Exception("Unsupported format char: '%s' in message %s" % (c, name))
+
+ self.msg_struct = msg_struct
+ self.msg_types = msg_types
+ self.msg_mults = msg_mults
+ self.colhash = {}
+ for i in range(len(self.columns)):
+ self.colhash[self.columns[i]] = i
+
+ def __str__(self):
+ return "DFFormat(%s,%s,%s,%s)" % (self.type, self.name, self.format, self.columns)
+
+def null_term(str):
+ '''null terminate a string'''
+ idx = str.find("\0")
+ if idx != -1:
+ str = str[:idx]
+ return str
+
+class DFMessage(object):
+ def __init__(self, fmt, elements, apply_multiplier):
+ self.fmt = fmt
+ self._elements = elements
+ self._apply_multiplier = apply_multiplier
+ self._fieldnames = fmt.columns
+
+ def to_dict(self):
+ d = {'mavpackettype': self.fmt.name}
+
+ for field in self._fieldnames:
+ d[field] = self.__getattr__(field)
+
+ return d
+
+ def __getattr__(self, field):
+ '''override field getter'''
+ try:
+ i = self.fmt.colhash[field]
+ except Exception:
+ raise AttributeError(field)
+ v = self._elements[i]
+ if self.fmt.format[i] != 'M' or self._apply_multiplier:
+ v = self.fmt.msg_types[i](v)
+ if self.fmt.msg_types[i] == str:
+ v = null_term(v)
+ if self.fmt.msg_mults[i] is not None and self._apply_multiplier:
+ v *= self.fmt.msg_mults[i]
+ return v
+
+ def get_type(self):
+ return self.fmt.name
+
+ def __str__(self):
+ ret = "%s {" % self.fmt.name
+ col_count = 0
+ for c in self.fmt.columns:
+ ret += "%s : %s, " % (c, self.__getattr__(c))
+ col_count += 1
+ if col_count != 0:
+ ret = ret[:-2]
+ return ret + '}'
+
+ def get_msgbuf(self):
+ '''create a binary message buffer for a message'''
+ values = []
+ for i in range(len(self.fmt.columns)):
+ if i >= len(self.fmt.msg_mults):
+ continue
+ mul = self.fmt.msg_mults[i]
+ name = self.fmt.columns[i]
+ if name == 'Mode' and 'ModeNum' in self.fmt.columns:
+ name = 'ModeNum'
+ v = self.__getattr__(name)
+ if mul is not None:
+ v /= mul
+ values.append(v)
+ return struct.pack("BBB", 0xA3, 0x95, self.fmt.type) + struct.pack(self.fmt.msg_struct, *values)
+
+ def get_fieldnames(self):
+ return self._fieldnames
+
+class DFReaderClock():
+ '''base class for all the different ways we count time in logs'''
+
+ def __init__(self):
+ self.set_timebase(0)
+ self.timestamp = 0
+
+ def _gpsTimeToTime(self, week, msec):
+ '''convert GPS week and TOW to a time in seconds since 1970'''
+ epoch = 86400*(10*365 + (1980-1969)/4 + 1 + 6 - 2)
+ return epoch + 86400*7*week + msec*0.001 - 15
+
+ def set_timebase(self, base):
+ self.timebase = base
+
+ def message_arrived(self, m):
+ pass
+
+ def rewind_event(self):
+ pass
+
+class DFReaderClock_usec(DFReaderClock):
+ '''DFReaderClock_usec - use microsecond timestamps from messages'''
+ def __init__(self):
+ DFReaderClock.__init__(self)
+
+ def find_time_base(self, gps, first_us_stamp):
+ '''work out time basis for the log - even newer style'''
+ t = self._gpsTimeToTime(gps.GWk, gps.GMS)
+ self.set_timebase(t - gps.TimeUS*0.000001)
+ # this ensures FMT messages get appropriate timestamp:
+ self.timestamp = self.timebase + first_us_stamp*0.000001
+
+ def type_has_good_TimeMS(self, type):
+ '''The TimeMS in some messages is not from *our* clock!'''
+ if type.startswith('ACC'):
+ return False;
+ if type.startswith('GYR'):
+ return False;
+ return True
+
+ def should_use_msec_field0(self, m):
+ if not self.type_has_good_TimeMS(m.get_type()):
+ return False
+ if 'TimeMS' != m._fieldnames[0]:
+ return False
+ if self.timebase + m.TimeMS*0.001 < self.timestamp:
+ return False
+ return True;
+
+ def set_message_timestamp(self, m):
+ if 'TimeUS' == m._fieldnames[0]:
+ # only format messages don't have a TimeUS in them...
+ m._timestamp = self.timebase + m.TimeUS*0.000001
+ elif self.should_use_msec_field0(m):
+ # ... in theory. I expect there to be some logs which are not
+ # "pure":
+ m._timestamp = self.timebase + m.TimeMS*0.001
+ else:
+ m._timestamp = self.timestamp
+ self.timestamp = m._timestamp
+
+class DFReaderClock_msec(DFReaderClock):
+ '''DFReaderClock_msec - a format where many messages have TimeMS in their formats, and GPS messages have a "T" field giving msecs '''
+ def find_time_base(self, gps, first_ms_stamp):
+ '''work out time basis for the log - new style'''
+ t = self._gpsTimeToTime(gps.Week, gps.TimeMS)
+ self.set_timebase(t - gps.T*0.001)
+ self.timestamp = self.timebase + first_ms_stamp*0.001
+
+ def set_message_timestamp(self, m):
+ if 'TimeMS' == m._fieldnames[0]:
+ m._timestamp = self.timebase + m.TimeMS*0.001
+ elif m.get_type() in ['GPS','GPS2']:
+ m._timestamp = self.timebase + m.T*0.001
+ else:
+ m._timestamp = self.timestamp
+ self.timestamp = m._timestamp
+
+class DFReaderClock_px4(DFReaderClock):
+ '''DFReaderClock_px4 - a format where a starting time is explicitly given in a message'''
+ def __init__(self):
+ DFReaderClock.__init__(self)
+ self.px4_timebase = 0
+
+ def find_time_base(self, gps):
+ '''work out time basis for the log - PX4 native'''
+ t = gps.GPSTime * 1.0e-6
+ self.timebase = t - self.px4_timebase
+
+ def set_px4_timebase(self, time_msg):
+ self.px4_timebase = time_msg.StartTime * 1.0e-6
+
+ def set_message_timestamp(self, m):
+ m._timestamp = self.timebase + self.px4_timebase
+
+ def message_arrived(self, m):
+ type = m.get_type()
+ if type == 'TIME' and 'StartTime' in m._fieldnames:
+ self.set_px4_timebase(m)
+
+class DFReaderClock_gps_interpolated(DFReaderClock):
+ '''DFReaderClock_gps_interpolated - for when the only real references in a message are GPS timestamps '''
+ def __init__(self):
+ DFReaderClock.__init__(self)
+ self.msg_rate = {}
+ self.counts = {}
+ self.counts_since_gps = {}
+
+ def rewind_event(self):
+ '''reset counters on rewind'''
+ self.counts = {}
+ self.counts_since_gps = {}
+
+ def message_arrived(self, m):
+ type = m.get_type()
+ if not type in self.counts:
+ self.counts[type] = 1
+ else:
+ self.counts[type] += 1
+ # this preserves existing behaviour - but should we be doing this
+ # if type == 'GPS'?
+ if not type in self.counts_since_gps:
+ self.counts_since_gps[type] = 1
+ else:
+ self.counts_since_gps[type] += 1
+
+ if type == 'GPS' or type == 'GPS2':
+ self.gps_message_arrived(m)
+
+ def gps_message_arrived(self, m):
+ '''adjust time base from GPS message'''
+ # msec-style GPS message?
+ gps_week = getattr(m, 'Week', None)
+ gps_timems = getattr(m, 'TimeMS', None)
+ if gps_week is None:
+ # usec-style GPS message?
+ gps_week = getattr(m, 'GWk', None)
+ gps_timems = getattr(m, 'GMS', None)
+ if gps_week is None:
+ if getattr(m, 'GPSTime', None) is not None:
+ # PX4-style timestamp; we've only been called
+ # because we were speculatively created in case no
+ # better clock was found.
+ return;
+
+ t = self._gpsTimeToTime(gps_week, gps_timems)
+
+ deltat = t - self.timebase
+ if deltat <= 0:
+ return
+
+ for type in self.counts_since_gps:
+ rate = self.counts_since_gps[type] / deltat
+ if rate > self.msg_rate.get(type, 0):
+ self.msg_rate[type] = rate
+ self.msg_rate['IMU'] = 50.0
+ self.timebase = t
+ self.counts_since_gps = {}
+
+ def set_message_timestamp(self, m):
+ rate = self.msg_rate.get(m.fmt.name, 50.0)
+ if int(rate) == 0:
+ rate = 50
+ count = self.counts_since_gps.get(m.fmt.name, 0)
+ m._timestamp = self.timebase + count/rate
+
+
+class DFReader(object):
+ '''parse a generic dataflash file'''
+ def __init__(self):
+ # read the whole file into memory for simplicity
+ self.clock = None
+ self.timestamp = 0
+ self.mav_type = mavutil.mavlink.MAV_TYPE_FIXED_WING
+ self.verbose = False
+ self.params = {}
+
+ def _rewind(self):
+ '''reset state on rewind'''
+ self.messages = { 'MAV' : self }
+ self.flightmode = "UNKNOWN"
+ self.percent = 0
+ if self.clock:
+ self.clock.rewind_event()
+
+ def init_clock_px4(self, px4_msg_time, px4_msg_gps):
+ self.clock = DFReaderClock_px4()
+ if not self._zero_time_base:
+ self.clock.set_px4_timebase(px4_msg_time)
+ self.clock.find_time_base(px4_msg_gps)
+ return True
+
+ def init_clock_msec(self):
+ # it is a new style flash log with full timestamps
+ self.clock = DFReaderClock_msec()
+
+ def init_clock_usec(self):
+ self.clock = DFReaderClock_usec()
+
+ def init_clock_gps_interpolated(self, clock):
+ self.clock = clock
+
+ def init_clock(self):
+ '''work out time basis for the log'''
+
+ self._rewind()
+
+ # speculatively create a gps clock in case we don't find anything
+ # better
+ gps_clock = DFReaderClock_gps_interpolated()
+ self.clock = gps_clock
+
+ px4_msg_time = None
+ px4_msg_gps = None
+ gps_interp_msg_gps1 = None
+ gps_interp_msg_gps2 = None
+ first_us_stamp = None
+ first_ms_stamp = None
+
+ have_good_clock = False
+ while True:
+ m = self.recv_msg()
+ if m is None:
+ break;
+
+ type = m.get_type()
+
+ if first_us_stamp is None:
+ first_us_stamp = getattr(m, "TimeUS", None);
+
+ if first_ms_stamp is None and (type != 'GPS' and type != 'GPS2'):
+ # Older GPS messages use TimeMS for msecs past start
+ # of gps week
+ first_ms_stamp = getattr(m, "TimeMS", None);
+
+ if type == 'GPS' or type == 'GPS2':
+ if getattr(m, "TimeUS", 0) != 0 and \
+ getattr(m, "GWk", 0) != 0: # everything-usec-timestamped
+ self.init_clock_usec()
+ if not self._zero_time_base:
+ self.clock.find_time_base(m, first_us_stamp)
+ have_good_clock = True
+ break
+ if getattr(m, "T", 0) != 0 and \
+ getattr(m, "Week", 0) != 0: # GPS is msec-timestamped
+ if first_ms_stamp is None:
+ first_ms_stamp = m.T
+ self.init_clock_msec()
+ if not self._zero_time_base:
+ self.clock.find_time_base(m, first_ms_stamp)
+ have_good_clock = True
+ break
+ if getattr(m, "GPSTime", 0) != 0: # px4-style-only
+ px4_msg_gps = m
+ if getattr(m, "Week", 0) != 0:
+ if gps_interp_msg_gps1 is not None and \
+ (gps_interp_msg_gps1.TimeMS != m.TimeMS or \
+ gps_interp_msg_gps1.Week != m.Week):
+ # we've received two distinct, non-zero GPS
+ # packets without finding a decent clock to
+ # use; fall back to interpolation. Q: should
+ # we wait a few more messages befoe doing
+ # this?
+ self.init_clock_gps_interpolated(gps_clock)
+ have_good_clock = True
+ break
+ gps_interp_msg_gps1 = m
+
+ elif type == 'TIME':
+ '''only px4-style logs use TIME'''
+ if getattr(m, "StartTime", None) != None:
+ px4_msg_time = m;
+
+ if px4_msg_time is not None and px4_msg_gps is not None:
+ self.init_clock_px4(px4_msg_time, px4_msg_gps)
+ have_good_clock = True
+ break
+
+# print("clock is " + str(self.clock))
+ if not have_good_clock:
+ # we failed to find any GPS messages to set a time
+ # base for usec and msec clocks. Also, not a
+ # PX4-style log
+ if first_us_stamp is not None:
+ self.init_clock_usec()
+ elif first_ms_stamp is not None:
+ self.init_clock_msec()
+
+ self._rewind()
+
+ return
+
+ def _set_time(self, m):
+ '''set time for a message'''
+ # really just left here for profiling
+ m._timestamp = self.timestamp
+ if len(m._fieldnames) > 0 and self.clock is not None:
+ self.clock.set_message_timestamp(m)
+
+ def recv_msg(self):
+ return self._parse_next()
+
+ def _add_msg(self, m):
+ '''add a new message'''
+ type = m.get_type()
+ self.messages[type] = m
+
+ if self.clock:
+ self.clock.message_arrived(m)
+
+ if type == 'MSG':
+ if m.Message.find("Rover") != -1:
+ self.mav_type = mavutil.mavlink.MAV_TYPE_GROUND_ROVER
+ elif m.Message.find("Plane") != -1:
+ self.mav_type = mavutil.mavlink.MAV_TYPE_FIXED_WING
+ elif m.Message.find("Copter") != -1:
+ self.mav_type = mavutil.mavlink.MAV_TYPE_QUADROTOR
+ elif m.Message.startswith("Antenna"):
+ self.mav_type = mavutil.mavlink.MAV_TYPE_ANTENNA_TRACKER
+ if type == 'MODE':
+ if isinstance(m.Mode, str):
+ self.flightmode = m.Mode.upper()
+ elif 'ModeNum' in m._fieldnames:
+ mapping = mavutil.mode_mapping_bynumber(self.mav_type)
+ if mapping is not None and m.ModeNum in mapping:
+ self.flightmode = mapping[m.ModeNum]
+ else:
+ self.flightmode = mavutil.mode_string_acm(m.Mode)
+ if type == 'STAT' and 'MainState' in m._fieldnames:
+ self.flightmode = mavutil.mode_string_px4(m.MainState)
+ if type == 'PARM' and getattr(m, 'Name', None) is not None:
+ self.params[m.Name] = m.Value
+ self._set_time(m)
+
+ def recv_match(self, condition=None, type=None, blocking=False):
+ '''recv the next message that matches the given condition
+ type can be a string or a list of strings'''
+ if type is not None and not isinstance(type, list):
+ type = [type]
+ while True:
+ m = self.recv_msg()
+ if m is None:
+ return None
+ if type is not None and not m.get_type() in type:
+ continue
+ if not mavutil.evaluate_condition(condition, self.messages):
+ continue
+ return m
+
+ def check_condition(self, condition):
+ '''check if a condition is true'''
+ return mavutil.evaluate_condition(condition, self.messages)
+
+ def param(self, name, default=None):
+ '''convenient function for returning an arbitrary MAVLink
+ parameter with a default'''
+ if not name in self.params:
+ return default
+ return self.params[name]
+
+class DFReader_binary(DFReader):
+ '''parse a binary dataflash file'''
+ def __init__(self, filename, zero_time_base=False):
+ DFReader.__init__(self)
+ # read the whole file into memory for simplicity
+ f = open(filename, mode='rb')
+ self.data = f.read()
+ self.data_len = len(self.data)
+ f.close()
+ self.HEAD1 = 0xA3
+ self.HEAD2 = 0x95
+ self.formats = {
+ 0x80 : DFFormat(0x80, 'FMT', 89, 'BBnNZ', "Type,Length,Name,Format,Columns")
+ }
+ self._zero_time_base = zero_time_base
+ self.init_clock()
+ self._rewind()
+
+ def _rewind(self):
+ '''rewind to start of log'''
+ DFReader._rewind(self)
+ self.offset = 0
+ self.remaining = self.data_len
+
+ def _parse_next(self):
+ '''read one message, returning it as an object'''
+ if self.data_len - self.offset < 3:
+ return None
+
+ hdr = self.data[self.offset:self.offset+3]
+ skip_bytes = 0
+ skip_type = None
+ # skip over bad messages
+ while (ord(hdr[0]) != self.HEAD1 or ord(hdr[1]) != self.HEAD2 or ord(hdr[2]) not in self.formats):
+ if skip_type is None:
+ skip_type = (ord(hdr[0]), ord(hdr[1]), ord(hdr[2]))
+ skip_start = self.offset
+ skip_bytes += 1
+ self.offset += 1
+ if self.data_len - self.offset < 3:
+ return None
+ hdr = self.data[self.offset:self.offset+3]
+ msg_type = ord(hdr[2])
+ if skip_bytes != 0:
+ if self.remaining < 528:
+ return None
+ print("Skipped %u bad bytes in log at offset %u, type=%s" % (skip_bytes, skip_start, skip_type))
+ self.remaining -= skip_bytes
+
+ self.offset += 3
+ self.remaining -= 3
+
+ if not msg_type in self.formats:
+ if self.verbose:
+ print("unknown message type %02x" % msg_type)
+ raise Exception("Unknown message type %02x" % msg_type)
+ fmt = self.formats[msg_type]
+ if self.remaining < fmt.len-3:
+ # out of data - can often happen half way through a message
+ if self.verbose:
+ print("out of data")
+ return None
+ body = self.data[self.offset:self.offset+(fmt.len-3)]
+ elements = None
+ try:
+ elements = list(struct.unpack(fmt.msg_struct, body))
+ except Exception:
+ if self.remaining < 528:
+ # we can have garbage at the end of an APM2 log
+ return None
+ # we should also cope with other corruption; logs
+ # transfered via DataFlash_MAVLink may have blocks of 0s
+ # in them, for example
+ print("Failed to parse %s/%s with len %u (remaining %u)" % (fmt.name, fmt.msg_struct, len(body), self.remaining))
+ if elements is None:
+ return self._parse_next()
+ name = null_term(fmt.name)
+ if name == 'FMT':
+ # add to formats
+ # name, len, format, headings
+ self.formats[elements[0]] = DFFormat(elements[0],
+ null_term(elements[2]), elements[1],
+ null_term(elements[3]), null_term(elements[4]))
+
+ self.offset += fmt.len-3
+ self.remaining -= fmt.len-3
+ m = DFMessage(fmt, elements, True)
+ self._add_msg(m)
+
+ self.percent = 100.0 * (self.offset / float(self.data_len))
+
+ return m
+
+def DFReader_is_text_log(filename):
+ '''return True if a file appears to be a valid text log'''
+ f = open(filename)
+ ret = (f.read(8000).find('FMT, ') != -1)
+ f.close()
+ return ret
+
+class DFReader_text(DFReader):
+ '''parse a text dataflash file'''
+ def __init__(self, filename, zero_time_base=False):
+ DFReader.__init__(self)
+ # read the whole file into memory for simplicity
+ f = open(filename, mode='r')
+ self.lines = f.readlines()
+ f.close()
+ self.formats = {
+ 'FMT' : DFFormat(0x80, 'FMT', 89, 'BBnNZ', "Type,Length,Name,Format,Columns")
+ }
+ self._rewind()
+ self._zero_time_base = zero_time_base
+ self.init_clock()
+ self._rewind()
+
+ def _rewind(self):
+ '''rewind to start of log'''
+ DFReader._rewind(self)
+ self.line = 0
+ # find the first valid line
+ while self.line < len(self.lines):
+ if self.lines[self.line].startswith("FMT, "):
+ break
+ self.line += 1
+
+ def _parse_next(self):
+ '''read one message, returning it as an object'''
+
+ this_line = self.line
+ while self.line < len(self.lines):
+ s = self.lines[self.line].rstrip()
+ elements = s.split(", ")
+ this_line = self.line
+ # move to next line
+ self.line += 1
+ if len(elements) >= 2:
+ # this_line is good
+ break
+
+ if this_line >= len(self.lines):
+ return None
+
+ # cope with empty structures
+ if len(elements) == 5 and elements[-1] == ',':
+ elements[-1] = ''
+ elements.append('')
+
+ self.percent = 100.0 * (this_line / float(len(self.lines)))
+
+ msg_type = elements[0]
+
+ if not msg_type in self.formats:
+ return self._parse_next()
+
+ fmt = self.formats[msg_type]
+
+ if len(elements) < len(fmt.format)+1:
+ # not enough columns
+ return self._parse_next()
+
+ elements = elements[1:]
+
+ name = fmt.name.rstrip('\0')
+ if name == 'FMT':
+ # add to formats
+ # name, len, format, headings
+ self.formats[elements[2]] = DFFormat(int(elements[0]), elements[2], int(elements[1]), elements[3], elements[4])
+
+ try:
+ m = DFMessage(fmt, elements, False)
+ except ValueError:
+ return self._parse_next()
+
+ self._add_msg(m)
+
+ return m
+
+
+if __name__ == "__main__":
+ import sys
+ use_profiler = False
+ if use_profiler:
+ from line_profiler import LineProfiler
+ profiler = LineProfiler()
+ profiler.add_function(DFReader_binary._parse_next)
+ profiler.add_function(DFReader_binary._add_msg)
+ profiler.add_function(DFReader._set_time)
+ profiler.enable_by_count()
+
+ filename = sys.argv[1]
+ if filename.endswith('.log'):
+ log = DFReader_text(filename)
+ else:
+ log = DFReader_binary(filename)
+ while True:
+ m = log.recv_msg()
+ if m is None:
+ break
+ #print(m)
+ if use_profiler:
+ profiler.print_stats()
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/PKG-INFO b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/PKG-INFO
new file mode 100644
index 000000000..47473b851
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/PKG-INFO
@@ -0,0 +1,17 @@
+Metadata-Version: 1.1
+Name: pymavlink
+Version: 2.0.8
+Summary: Python MAVLink code
+Home-page: http://github.com/mavlink/mavlink
+Author: UNKNOWN
+Author-email: UNKNOWN
+License: LGPLv3
+Description: A Python library for handling MAVLink protocol streams and log files. This allows for the creation of simple scripts to analyse telemetry logs from autopilots such as ArduPilot which use the MAVLink protocol. See the scripts that come with the package for examples of small, useful scripts that use pymavlink. For more information about the MAVLink protocol see http://qgroundcontrol.org/mavlink/
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Console
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Topic :: Scientific/Engineering
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/README.txt b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/README.txt
new file mode 100644
index 000000000..00d1a7479
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/README.txt
@@ -0,0 +1,11 @@
+This is a python implementation of the MAVLink protocol.
+
+Please see http://www.qgroundcontrol.org/mavlink/pymavlink for
+documentation
+
+License
+-------
+
+pymavlink is released under the GNU Lesser General Public License v3 or later
+
+Join the chat at https://gitter.im/ArduPilot/pymavlink
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/__init__.py
new file mode 100644
index 000000000..27bfa2bee
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/__init__.py
@@ -0,0 +1 @@
+'''Python MAVLink library - see http://www.qgroundcontrol.org/mavlink/mavproxy_startpage'''
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.py
new file mode 100644
index 000000000..f594613ca
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.py
@@ -0,0 +1,12730 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ASLUAV.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'ASLUAV'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_RESET_MPPT = 40001 # Mission command to reset Maximum Power Point Tracker (MPPT)
+enums['MAV_CMD'][40001] = EnumEntry('MAV_CMD_RESET_MPPT', '''Mission command to reset Maximum Power Point Tracker (MPPT)''')
+enums['MAV_CMD'][40001].param[1] = '''MPPT number'''
+enums['MAV_CMD'][40001].param[2] = '''Empty'''
+enums['MAV_CMD'][40001].param[3] = '''Empty'''
+enums['MAV_CMD'][40001].param[4] = '''Empty'''
+enums['MAV_CMD'][40001].param[5] = '''Empty'''
+enums['MAV_CMD'][40001].param[6] = '''Empty'''
+enums['MAV_CMD'][40001].param[7] = '''Empty'''
+MAV_CMD_PAYLOAD_CONTROL = 40002 # Mission command to perform a power cycle on payload
+enums['MAV_CMD'][40002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL', '''Mission command to perform a power cycle on payload''')
+enums['MAV_CMD'][40002].param[1] = '''Complete power cycle'''
+enums['MAV_CMD'][40002].param[2] = '''VISensor power cycle'''
+enums['MAV_CMD'][40002].param[3] = '''Empty'''
+enums['MAV_CMD'][40002].param[4] = '''Empty'''
+enums['MAV_CMD'][40002].param[5] = '''Empty'''
+enums['MAV_CMD'][40002].param[6] = '''Empty'''
+enums['MAV_CMD'][40002].param[7] = '''Empty'''
+MAV_CMD_ENUM_END = 40003 #
+enums['MAV_CMD'][40003] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SENS_POWER = 201
+MAVLINK_MSG_ID_SENS_MPPT = 202
+MAVLINK_MSG_ID_ASLCTRL_DATA = 203
+MAVLINK_MSG_ID_ASLCTRL_DEBUG = 204
+MAVLINK_MSG_ID_ASLUAV_STATUS = 205
+MAVLINK_MSG_ID_EKF_EXT = 206
+MAVLINK_MSG_ID_ASL_OBCTRL = 207
+MAVLINK_MSG_ID_SENS_ATMOS = 208
+MAVLINK_MSG_ID_SENS_BATMON = 209
+MAVLINK_MSG_ID_FW_SOARING_DATA = 210
+MAVLINK_MSG_ID_SENSORPOD_STATUS = 211
+MAVLINK_MSG_ID_SENS_POWER_BOARD = 212
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_sens_power_message(MAVLink_message):
+ '''
+ Voltage and current sensor data
+ '''
+ id = MAVLINK_MSG_ID_SENS_POWER
+ name = 'SENS_POWER'
+ fieldnames = ['adc121_vspb_volt', 'adc121_cspb_amp', 'adc121_cs1_amp', 'adc121_cs2_amp']
+ ordered_fieldnames = [ 'adc121_vspb_volt', 'adc121_cspb_amp', 'adc121_cs1_amp', 'adc121_cs2_amp' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.xml
new file mode 100644
index 000000000..5eba2d187
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ASLUAV.xml
@@ -0,0 +1,202 @@
+
+
+
+
+ common.xml
+
+
+
+
+ Mission command to reset Maximum Power Point Tracker (MPPT)
+ MPPT number
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a power cycle on payload
+ Complete power cycle
+ VISensor power cycle
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Voltage and current sensor data
+ Power board voltage sensor reading in volts
+ Power board current sensor reading in amps
+ Board current sensor 1 reading in amps
+ Board current sensor 2 reading in amps
+
+
+ Maximum Power Point Tracker (MPPT) sensor data for solar module power performance tracking
+ MPPT last timestamp
+ MPPT1 voltage
+ MPPT1 current
+ MPPT1 pwm
+ MPPT1 status
+ MPPT2 voltage
+ MPPT2 current
+ MPPT2 pwm
+ MPPT2 status
+ MPPT3 voltage
+ MPPT3 current
+ MPPT3 pwm
+ MPPT3 status
+
+
+ ASL-fixed-wing controller data
+ Timestamp
+ ASLCTRL control-mode (manual, stabilized, auto, etc...)
+ See sourcecode for a description of these values...
+
+
+ Pitch angle [deg]
+ Pitch angle reference[deg]
+
+
+
+
+
+
+ Airspeed reference [m/s]
+
+ Yaw angle [deg]
+ Yaw angle reference[deg]
+ Roll angle [deg]
+ Roll angle reference[deg]
+
+
+
+
+
+
+
+
+ ASL-fixed-wing controller debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+
+
+ Extended state information for ASLUAVs
+ Status of the position-indicator LEDs
+ Status of the IRIDIUM satellite communication system
+ Status vector for up to 8 servos
+ Motor RPM
+
+
+
+ Extended EKF state estimates for ASLUAVs
+ Time since system start [us]
+ Magnitude of wind velocity (in lateral inertial plane) [m/s]
+ Wind heading angle from North [rad]
+ Z (Down) component of inertial wind velocity [m/s]
+ Magnitude of air velocity [m/s]
+ Sideslip angle [rad]
+ Angle of attack [rad]
+
+
+ Off-board controls/commands for ASLUAVs
+ Time since system start [us]
+ Elevator command [~]
+ Throttle command [~]
+ Throttle 2 command [~]
+ Left aileron command [~]
+ Right aileron command [~]
+ Rudder command [~]
+ Off-board computer status
+
+
+ Atmospheric sensors (temperature, humidity, ...)
+ Ambient temperature [degrees Celsius]
+ Relative humidity [%]
+
+
+ Battery pack monitoring data for Li-Ion batteries
+ Battery pack temperature in [deg C]
+ Battery pack voltage in [mV]
+ Battery pack current in [mA]
+ Battery pack state-of-charge
+ Battery monitor status report bits in Hex
+ Battery monitor serial number in Hex
+ Battery monitor sensor host FET control in Hex
+ Battery pack cell 1 voltage in [mV]
+ Battery pack cell 2 voltage in [mV]
+ Battery pack cell 3 voltage in [mV]
+ Battery pack cell 4 voltage in [mV]
+ Battery pack cell 5 voltage in [mV]
+ Battery pack cell 6 voltage in [mV]
+
+
+ Fixed-wing soaring (i.e. thermal seeking) data
+ Timestamp [ms]
+ Timestamp since last mode change[ms]
+ Thermal core updraft strength [m/s]
+ Thermal radius [m]
+ Thermal center latitude [deg]
+ Thermal center longitude [deg]
+ Variance W
+ Variance R
+ Variance Lat
+ Variance Lon
+ Suggested loiter radius [m]
+ Suggested loiter direction
+ Distance to soar point [m]
+ Expected sink rate at current airspeed, roll and throttle [m/s]
+ Measurement / updraft speed at current/local airplane position [m/s]
+ Measurement / roll angle tracking error [deg]
+ Expected measurement 1
+ Expected measurement 2
+ Thermal drift (from estimator prediction step only) [m/s]
+ Thermal drift (from estimator prediction step only) [m/s]
+ Total specific energy change (filtered) [m/s]
+ Debug variable 1
+ Debug variable 2
+ Control Mode [-]
+ Data valid [-]
+
+
+ Monitoring of sensorpod status
+ Timestamp in linuxtime [ms] (since 1.1.1970)
+ Rate of ROS topic 1
+ Rate of ROS topic 2
+ Rate of ROS topic 3
+ Rate of ROS topic 4
+ Number of recording nodes
+ Temperature of sensorpod CPU in [deg C]
+ Free space available in recordings directory in [Gb] * 1e2
+
+
+ Monitoring of power board status
+ Timestamp
+ Power board status register
+ Power board leds status
+ Power board system voltage
+ Power board servo voltage
+ Power board left motor current sensor
+ Power board right motor current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board aux current sensor
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.py
new file mode 100644
index 000000000..b14912994
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.py
@@ -0,0 +1,15570 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ardupilotmega.xml,common.xml,uAvionix.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'ardupilotmega'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_ALTITUDE_WAIT = 83 # Mission command to wait for an altitude or downwards vertical speed.
+ # This is meant for high altitude balloon
+ # launches, allowing the aircraft to be idle
+ # until either an altitude is reached or a
+ # negative vertical speed is reached
+ # (indicating early balloon burst). The wiggle
+ # time is how often to wiggle the control
+ # surfaces to prevent them seizing up.
+enums['MAV_CMD'][83] = EnumEntry('MAV_CMD_NAV_ALTITUDE_WAIT', '''Mission command to wait for an altitude or downwards vertical speed. This is meant for high altitude balloon launches, allowing the aircraft to be idle until either an altitude is reached or a negative vertical speed is reached (indicating early balloon burst). The wiggle time is how often to wiggle the control surfaces to prevent them seizing up.''')
+enums['MAV_CMD'][83].param[1] = '''altitude (m)'''
+enums['MAV_CMD'][83].param[2] = '''descent speed (m/s)'''
+enums['MAV_CMD'][83].param[3] = '''Wiggle Time (s)'''
+enums['MAV_CMD'][83].param[4] = '''Empty'''
+enums['MAV_CMD'][83].param[5] = '''Empty'''
+enums['MAV_CMD'][83].param[6] = '''Empty'''
+enums['MAV_CMD'][83].param[7] = '''Empty'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_GRIPPER = 211 # Mission command to operate EPM gripper
+enums['MAV_CMD'][211] = EnumEntry('MAV_CMD_DO_GRIPPER', '''Mission command to operate EPM gripper''')
+enums['MAV_CMD'][211].param[1] = '''gripper number (a number from 1 to max number of grippers on the vehicle)'''
+enums['MAV_CMD'][211].param[2] = '''gripper action (0=release, 1=grab. See GRIPPER_ACTIONS enum)'''
+enums['MAV_CMD'][211].param[3] = '''Empty'''
+enums['MAV_CMD'][211].param[4] = '''Empty'''
+enums['MAV_CMD'][211].param[5] = '''Empty'''
+enums['MAV_CMD'][211].param[6] = '''Empty'''
+enums['MAV_CMD'][211].param[7] = '''Empty'''
+MAV_CMD_DO_AUTOTUNE_ENABLE = 212 # Enable/disable autotune
+enums['MAV_CMD'][212] = EnumEntry('MAV_CMD_DO_AUTOTUNE_ENABLE', '''Enable/disable autotune''')
+enums['MAV_CMD'][212].param[1] = '''enable (1: enable, 0:disable)'''
+enums['MAV_CMD'][212].param[2] = '''Empty'''
+enums['MAV_CMD'][212].param[3] = '''Empty'''
+enums['MAV_CMD'][212].param[4] = '''Empty'''
+enums['MAV_CMD'][212].param[5] = '''Empty'''
+enums['MAV_CMD'][212].param[6] = '''Empty'''
+enums['MAV_CMD'][212].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_POWER_OFF_INITIATED = 42000 # A system wide power-off event has been initiated.
+enums['MAV_CMD'][42000] = EnumEntry('MAV_CMD_POWER_OFF_INITIATED', '''A system wide power-off event has been initiated.''')
+enums['MAV_CMD'][42000].param[1] = '''Empty'''
+enums['MAV_CMD'][42000].param[2] = '''Empty'''
+enums['MAV_CMD'][42000].param[3] = '''Empty'''
+enums['MAV_CMD'][42000].param[4] = '''Empty'''
+enums['MAV_CMD'][42000].param[5] = '''Empty'''
+enums['MAV_CMD'][42000].param[6] = '''Empty'''
+enums['MAV_CMD'][42000].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_FLY_CLICK = 42001 # FLY button has been clicked.
+enums['MAV_CMD'][42001] = EnumEntry('MAV_CMD_SOLO_BTN_FLY_CLICK', '''FLY button has been clicked.''')
+enums['MAV_CMD'][42001].param[1] = '''Empty'''
+enums['MAV_CMD'][42001].param[2] = '''Empty'''
+enums['MAV_CMD'][42001].param[3] = '''Empty'''
+enums['MAV_CMD'][42001].param[4] = '''Empty'''
+enums['MAV_CMD'][42001].param[5] = '''Empty'''
+enums['MAV_CMD'][42001].param[6] = '''Empty'''
+enums['MAV_CMD'][42001].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_FLY_HOLD = 42002 # FLY button has been held for 1.5 seconds.
+enums['MAV_CMD'][42002] = EnumEntry('MAV_CMD_SOLO_BTN_FLY_HOLD', '''FLY button has been held for 1.5 seconds.''')
+enums['MAV_CMD'][42002].param[1] = '''Takeoff altitude'''
+enums['MAV_CMD'][42002].param[2] = '''Empty'''
+enums['MAV_CMD'][42002].param[3] = '''Empty'''
+enums['MAV_CMD'][42002].param[4] = '''Empty'''
+enums['MAV_CMD'][42002].param[5] = '''Empty'''
+enums['MAV_CMD'][42002].param[6] = '''Empty'''
+enums['MAV_CMD'][42002].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_PAUSE_CLICK = 42003 # PAUSE button has been clicked.
+enums['MAV_CMD'][42003] = EnumEntry('MAV_CMD_SOLO_BTN_PAUSE_CLICK', '''PAUSE button has been clicked.''')
+enums['MAV_CMD'][42003].param[1] = '''1 if Solo is in a shot mode, 0 otherwise'''
+enums['MAV_CMD'][42003].param[2] = '''Empty'''
+enums['MAV_CMD'][42003].param[3] = '''Empty'''
+enums['MAV_CMD'][42003].param[4] = '''Empty'''
+enums['MAV_CMD'][42003].param[5] = '''Empty'''
+enums['MAV_CMD'][42003].param[6] = '''Empty'''
+enums['MAV_CMD'][42003].param[7] = '''Empty'''
+MAV_CMD_DO_START_MAG_CAL = 42424 # Initiate a magnetometer calibration
+enums['MAV_CMD'][42424] = EnumEntry('MAV_CMD_DO_START_MAG_CAL', '''Initiate a magnetometer calibration''')
+enums['MAV_CMD'][42424].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42424].param[2] = '''Automatically retry on failure (0=no retry, 1=retry).'''
+enums['MAV_CMD'][42424].param[3] = '''Save without user input (0=require input, 1=autosave).'''
+enums['MAV_CMD'][42424].param[4] = '''Delay (seconds)'''
+enums['MAV_CMD'][42424].param[5] = '''Autoreboot (0=user reboot, 1=autoreboot)'''
+enums['MAV_CMD'][42424].param[6] = '''Empty'''
+enums['MAV_CMD'][42424].param[7] = '''Empty'''
+MAV_CMD_DO_ACCEPT_MAG_CAL = 42425 # Initiate a magnetometer calibration
+enums['MAV_CMD'][42425] = EnumEntry('MAV_CMD_DO_ACCEPT_MAG_CAL', '''Initiate a magnetometer calibration''')
+enums['MAV_CMD'][42425].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42425].param[2] = '''Empty'''
+enums['MAV_CMD'][42425].param[3] = '''Empty'''
+enums['MAV_CMD'][42425].param[4] = '''Empty'''
+enums['MAV_CMD'][42425].param[5] = '''Empty'''
+enums['MAV_CMD'][42425].param[6] = '''Empty'''
+enums['MAV_CMD'][42425].param[7] = '''Empty'''
+MAV_CMD_DO_CANCEL_MAG_CAL = 42426 # Cancel a running magnetometer calibration
+enums['MAV_CMD'][42426] = EnumEntry('MAV_CMD_DO_CANCEL_MAG_CAL', '''Cancel a running magnetometer calibration''')
+enums['MAV_CMD'][42426].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42426].param[2] = '''Empty'''
+enums['MAV_CMD'][42426].param[3] = '''Empty'''
+enums['MAV_CMD'][42426].param[4] = '''Empty'''
+enums['MAV_CMD'][42426].param[5] = '''Empty'''
+enums['MAV_CMD'][42426].param[6] = '''Empty'''
+enums['MAV_CMD'][42426].param[7] = '''Empty'''
+MAV_CMD_SET_FACTORY_TEST_MODE = 42427 # Command autopilot to get into factory test/diagnostic mode
+enums['MAV_CMD'][42427] = EnumEntry('MAV_CMD_SET_FACTORY_TEST_MODE', '''Command autopilot to get into factory test/diagnostic mode''')
+enums['MAV_CMD'][42427].param[1] = '''0 means get out of test mode, 1 means get into test mode'''
+enums['MAV_CMD'][42427].param[2] = '''Empty'''
+enums['MAV_CMD'][42427].param[3] = '''Empty'''
+enums['MAV_CMD'][42427].param[4] = '''Empty'''
+enums['MAV_CMD'][42427].param[5] = '''Empty'''
+enums['MAV_CMD'][42427].param[6] = '''Empty'''
+enums['MAV_CMD'][42427].param[7] = '''Empty'''
+MAV_CMD_DO_SEND_BANNER = 42428 # Reply with the version banner
+enums['MAV_CMD'][42428] = EnumEntry('MAV_CMD_DO_SEND_BANNER', '''Reply with the version banner''')
+enums['MAV_CMD'][42428].param[1] = '''Empty'''
+enums['MAV_CMD'][42428].param[2] = '''Empty'''
+enums['MAV_CMD'][42428].param[3] = '''Empty'''
+enums['MAV_CMD'][42428].param[4] = '''Empty'''
+enums['MAV_CMD'][42428].param[5] = '''Empty'''
+enums['MAV_CMD'][42428].param[6] = '''Empty'''
+enums['MAV_CMD'][42428].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_RESET = 42501 # Causes the gimbal to reset and boot as if it was just powered on
+enums['MAV_CMD'][42501] = EnumEntry('MAV_CMD_GIMBAL_RESET', '''Causes the gimbal to reset and boot as if it was just powered on''')
+enums['MAV_CMD'][42501].param[1] = '''Empty'''
+enums['MAV_CMD'][42501].param[2] = '''Empty'''
+enums['MAV_CMD'][42501].param[3] = '''Empty'''
+enums['MAV_CMD'][42501].param[4] = '''Empty'''
+enums['MAV_CMD'][42501].param[5] = '''Empty'''
+enums['MAV_CMD'][42501].param[6] = '''Empty'''
+enums['MAV_CMD'][42501].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS = 42502 # Reports progress and success or failure of gimbal axis calibration
+ # procedure
+enums['MAV_CMD'][42502] = EnumEntry('MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS', '''Reports progress and success or failure of gimbal axis calibration procedure''')
+enums['MAV_CMD'][42502].param[1] = '''Gimbal axis we're reporting calibration progress for'''
+enums['MAV_CMD'][42502].param[2] = '''Current calibration progress for this axis, 0x64=100%'''
+enums['MAV_CMD'][42502].param[3] = '''Status of the calibration'''
+enums['MAV_CMD'][42502].param[4] = '''Empty'''
+enums['MAV_CMD'][42502].param[5] = '''Empty'''
+enums['MAV_CMD'][42502].param[6] = '''Empty'''
+enums['MAV_CMD'][42502].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION = 42503 # Starts commutation calibration on the gimbal
+enums['MAV_CMD'][42503] = EnumEntry('MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION', '''Starts commutation calibration on the gimbal''')
+enums['MAV_CMD'][42503].param[1] = '''Empty'''
+enums['MAV_CMD'][42503].param[2] = '''Empty'''
+enums['MAV_CMD'][42503].param[3] = '''Empty'''
+enums['MAV_CMD'][42503].param[4] = '''Empty'''
+enums['MAV_CMD'][42503].param[5] = '''Empty'''
+enums['MAV_CMD'][42503].param[6] = '''Empty'''
+enums['MAV_CMD'][42503].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_FULL_RESET = 42505 # Erases gimbal application and parameters
+enums['MAV_CMD'][42505] = EnumEntry('MAV_CMD_GIMBAL_FULL_RESET', '''Erases gimbal application and parameters''')
+enums['MAV_CMD'][42505].param[1] = '''Magic number'''
+enums['MAV_CMD'][42505].param[2] = '''Magic number'''
+enums['MAV_CMD'][42505].param[3] = '''Magic number'''
+enums['MAV_CMD'][42505].param[4] = '''Magic number'''
+enums['MAV_CMD'][42505].param[5] = '''Magic number'''
+enums['MAV_CMD'][42505].param[6] = '''Magic number'''
+enums['MAV_CMD'][42505].param[7] = '''Magic number'''
+MAV_CMD_ENUM_END = 42506 #
+enums['MAV_CMD'][42506] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# LIMITS_STATE
+enums['LIMITS_STATE'] = {}
+LIMITS_INIT = 0 # pre-initialization
+enums['LIMITS_STATE'][0] = EnumEntry('LIMITS_INIT', '''pre-initialization''')
+LIMITS_DISABLED = 1 # disabled
+enums['LIMITS_STATE'][1] = EnumEntry('LIMITS_DISABLED', '''disabled''')
+LIMITS_ENABLED = 2 # checking limits
+enums['LIMITS_STATE'][2] = EnumEntry('LIMITS_ENABLED', '''checking limits''')
+LIMITS_TRIGGERED = 3 # a limit has been breached
+enums['LIMITS_STATE'][3] = EnumEntry('LIMITS_TRIGGERED', '''a limit has been breached''')
+LIMITS_RECOVERING = 4 # taking action eg. RTL
+enums['LIMITS_STATE'][4] = EnumEntry('LIMITS_RECOVERING', '''taking action eg. RTL''')
+LIMITS_RECOVERED = 5 # we're no longer in breach of a limit
+enums['LIMITS_STATE'][5] = EnumEntry('LIMITS_RECOVERED', '''we're no longer in breach of a limit''')
+LIMITS_STATE_ENUM_END = 6 #
+enums['LIMITS_STATE'][6] = EnumEntry('LIMITS_STATE_ENUM_END', '''''')
+
+# LIMIT_MODULE
+enums['LIMIT_MODULE'] = {}
+LIMIT_GPSLOCK = 1 # pre-initialization
+enums['LIMIT_MODULE'][1] = EnumEntry('LIMIT_GPSLOCK', '''pre-initialization''')
+LIMIT_GEOFENCE = 2 # disabled
+enums['LIMIT_MODULE'][2] = EnumEntry('LIMIT_GEOFENCE', '''disabled''')
+LIMIT_ALTITUDE = 4 # checking limits
+enums['LIMIT_MODULE'][4] = EnumEntry('LIMIT_ALTITUDE', '''checking limits''')
+LIMIT_MODULE_ENUM_END = 5 #
+enums['LIMIT_MODULE'][5] = EnumEntry('LIMIT_MODULE_ENUM_END', '''''')
+
+# RALLY_FLAGS
+enums['RALLY_FLAGS'] = {}
+FAVORABLE_WIND = 1 # Flag set when requiring favorable winds for landing.
+enums['RALLY_FLAGS'][1] = EnumEntry('FAVORABLE_WIND', '''Flag set when requiring favorable winds for landing.''')
+LAND_IMMEDIATELY = 2 # Flag set when plane is to immediately descend to break altitude and
+ # land without GCS intervention. Flag not set
+ # when plane is to loiter at Rally point until
+ # commanded to land.
+enums['RALLY_FLAGS'][2] = EnumEntry('LAND_IMMEDIATELY', '''Flag set when plane is to immediately descend to break altitude and land without GCS intervention. Flag not set when plane is to loiter at Rally point until commanded to land.''')
+RALLY_FLAGS_ENUM_END = 3 #
+enums['RALLY_FLAGS'][3] = EnumEntry('RALLY_FLAGS_ENUM_END', '''''')
+
+# PARACHUTE_ACTION
+enums['PARACHUTE_ACTION'] = {}
+PARACHUTE_DISABLE = 0 # Disable parachute release
+enums['PARACHUTE_ACTION'][0] = EnumEntry('PARACHUTE_DISABLE', '''Disable parachute release''')
+PARACHUTE_ENABLE = 1 # Enable parachute release
+enums['PARACHUTE_ACTION'][1] = EnumEntry('PARACHUTE_ENABLE', '''Enable parachute release''')
+PARACHUTE_RELEASE = 2 # Release parachute
+enums['PARACHUTE_ACTION'][2] = EnumEntry('PARACHUTE_RELEASE', '''Release parachute''')
+PARACHUTE_ACTION_ENUM_END = 3 #
+enums['PARACHUTE_ACTION'][3] = EnumEntry('PARACHUTE_ACTION_ENUM_END', '''''')
+
+# GRIPPER_ACTIONS
+enums['GRIPPER_ACTIONS'] = {}
+GRIPPER_ACTION_RELEASE = 0 # gripper release of cargo
+enums['GRIPPER_ACTIONS'][0] = EnumEntry('GRIPPER_ACTION_RELEASE', '''gripper release of cargo''')
+GRIPPER_ACTION_GRAB = 1 # gripper grabs onto cargo
+enums['GRIPPER_ACTIONS'][1] = EnumEntry('GRIPPER_ACTION_GRAB', '''gripper grabs onto cargo''')
+GRIPPER_ACTIONS_ENUM_END = 2 #
+enums['GRIPPER_ACTIONS'][2] = EnumEntry('GRIPPER_ACTIONS_ENUM_END', '''''')
+
+# CAMERA_STATUS_TYPES
+enums['CAMERA_STATUS_TYPES'] = {}
+CAMERA_STATUS_TYPE_HEARTBEAT = 0 # Camera heartbeat, announce camera component ID at 1hz
+enums['CAMERA_STATUS_TYPES'][0] = EnumEntry('CAMERA_STATUS_TYPE_HEARTBEAT', '''Camera heartbeat, announce camera component ID at 1hz''')
+CAMERA_STATUS_TYPE_TRIGGER = 1 # Camera image triggered
+enums['CAMERA_STATUS_TYPES'][1] = EnumEntry('CAMERA_STATUS_TYPE_TRIGGER', '''Camera image triggered''')
+CAMERA_STATUS_TYPE_DISCONNECT = 2 # Camera connection lost
+enums['CAMERA_STATUS_TYPES'][2] = EnumEntry('CAMERA_STATUS_TYPE_DISCONNECT', '''Camera connection lost''')
+CAMERA_STATUS_TYPE_ERROR = 3 # Camera unknown error
+enums['CAMERA_STATUS_TYPES'][3] = EnumEntry('CAMERA_STATUS_TYPE_ERROR', '''Camera unknown error''')
+CAMERA_STATUS_TYPE_LOWBATT = 4 # Camera battery low. Parameter p1 shows reported voltage
+enums['CAMERA_STATUS_TYPES'][4] = EnumEntry('CAMERA_STATUS_TYPE_LOWBATT', '''Camera battery low. Parameter p1 shows reported voltage''')
+CAMERA_STATUS_TYPE_LOWSTORE = 5 # Camera storage low. Parameter p1 shows reported shots remaining
+enums['CAMERA_STATUS_TYPES'][5] = EnumEntry('CAMERA_STATUS_TYPE_LOWSTORE', '''Camera storage low. Parameter p1 shows reported shots remaining''')
+CAMERA_STATUS_TYPE_LOWSTOREV = 6 # Camera storage low. Parameter p1 shows reported video minutes
+ # remaining
+enums['CAMERA_STATUS_TYPES'][6] = EnumEntry('CAMERA_STATUS_TYPE_LOWSTOREV', '''Camera storage low. Parameter p1 shows reported video minutes remaining''')
+CAMERA_STATUS_TYPES_ENUM_END = 7 #
+enums['CAMERA_STATUS_TYPES'][7] = EnumEntry('CAMERA_STATUS_TYPES_ENUM_END', '''''')
+
+# CAMERA_FEEDBACK_FLAGS
+enums['CAMERA_FEEDBACK_FLAGS'] = {}
+CAMERA_FEEDBACK_PHOTO = 0 # Shooting photos, not video
+enums['CAMERA_FEEDBACK_FLAGS'][0] = EnumEntry('CAMERA_FEEDBACK_PHOTO', '''Shooting photos, not video''')
+CAMERA_FEEDBACK_VIDEO = 1 # Shooting video, not stills
+enums['CAMERA_FEEDBACK_FLAGS'][1] = EnumEntry('CAMERA_FEEDBACK_VIDEO', '''Shooting video, not stills''')
+CAMERA_FEEDBACK_BADEXPOSURE = 2 # Unable to achieve requested exposure (e.g. shutter speed too low)
+enums['CAMERA_FEEDBACK_FLAGS'][2] = EnumEntry('CAMERA_FEEDBACK_BADEXPOSURE', '''Unable to achieve requested exposure (e.g. shutter speed too low)''')
+CAMERA_FEEDBACK_CLOSEDLOOP = 3 # Closed loop feedback from camera, we know for sure it has successfully
+ # taken a picture
+enums['CAMERA_FEEDBACK_FLAGS'][3] = EnumEntry('CAMERA_FEEDBACK_CLOSEDLOOP', '''Closed loop feedback from camera, we know for sure it has successfully taken a picture''')
+CAMERA_FEEDBACK_OPENLOOP = 4 # Open loop camera, an image trigger has been requested but we can't
+ # know for sure it has successfully taken a
+ # picture
+enums['CAMERA_FEEDBACK_FLAGS'][4] = EnumEntry('CAMERA_FEEDBACK_OPENLOOP', '''Open loop camera, an image trigger has been requested but we can't know for sure it has successfully taken a picture''')
+CAMERA_FEEDBACK_FLAGS_ENUM_END = 5 #
+enums['CAMERA_FEEDBACK_FLAGS'][5] = EnumEntry('CAMERA_FEEDBACK_FLAGS_ENUM_END', '''''')
+
+# MAV_MODE_GIMBAL
+enums['MAV_MODE_GIMBAL'] = {}
+MAV_MODE_GIMBAL_UNINITIALIZED = 0 # Gimbal is powered on but has not started initializing yet
+enums['MAV_MODE_GIMBAL'][0] = EnumEntry('MAV_MODE_GIMBAL_UNINITIALIZED', '''Gimbal is powered on but has not started initializing yet''')
+MAV_MODE_GIMBAL_CALIBRATING_PITCH = 1 # Gimbal is currently running calibration on the pitch axis
+enums['MAV_MODE_GIMBAL'][1] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_PITCH', '''Gimbal is currently running calibration on the pitch axis''')
+MAV_MODE_GIMBAL_CALIBRATING_ROLL = 2 # Gimbal is currently running calibration on the roll axis
+enums['MAV_MODE_GIMBAL'][2] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_ROLL', '''Gimbal is currently running calibration on the roll axis''')
+MAV_MODE_GIMBAL_CALIBRATING_YAW = 3 # Gimbal is currently running calibration on the yaw axis
+enums['MAV_MODE_GIMBAL'][3] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_YAW', '''Gimbal is currently running calibration on the yaw axis''')
+MAV_MODE_GIMBAL_INITIALIZED = 4 # Gimbal has finished calibrating and initializing, but is relaxed
+ # pending reception of first rate command from
+ # copter
+enums['MAV_MODE_GIMBAL'][4] = EnumEntry('MAV_MODE_GIMBAL_INITIALIZED', '''Gimbal has finished calibrating and initializing, but is relaxed pending reception of first rate command from copter''')
+MAV_MODE_GIMBAL_ACTIVE = 5 # Gimbal is actively stabilizing
+enums['MAV_MODE_GIMBAL'][5] = EnumEntry('MAV_MODE_GIMBAL_ACTIVE', '''Gimbal is actively stabilizing''')
+MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT = 6 # Gimbal is relaxed because it missed more than 10 expected rate command
+ # messages in a row. Gimbal will move back to
+ # active mode when it receives a new rate
+ # command
+enums['MAV_MODE_GIMBAL'][6] = EnumEntry('MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT', '''Gimbal is relaxed because it missed more than 10 expected rate command messages in a row. Gimbal will move back to active mode when it receives a new rate command''')
+MAV_MODE_GIMBAL_ENUM_END = 7 #
+enums['MAV_MODE_GIMBAL'][7] = EnumEntry('MAV_MODE_GIMBAL_ENUM_END', '''''')
+
+# GIMBAL_AXIS
+enums['GIMBAL_AXIS'] = {}
+GIMBAL_AXIS_YAW = 0 # Gimbal yaw axis
+enums['GIMBAL_AXIS'][0] = EnumEntry('GIMBAL_AXIS_YAW', '''Gimbal yaw axis''')
+GIMBAL_AXIS_PITCH = 1 # Gimbal pitch axis
+enums['GIMBAL_AXIS'][1] = EnumEntry('GIMBAL_AXIS_PITCH', '''Gimbal pitch axis''')
+GIMBAL_AXIS_ROLL = 2 # Gimbal roll axis
+enums['GIMBAL_AXIS'][2] = EnumEntry('GIMBAL_AXIS_ROLL', '''Gimbal roll axis''')
+GIMBAL_AXIS_ENUM_END = 3 #
+enums['GIMBAL_AXIS'][3] = EnumEntry('GIMBAL_AXIS_ENUM_END', '''''')
+
+# GIMBAL_AXIS_CALIBRATION_STATUS
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'] = {}
+GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS = 0 # Axis calibration is in progress
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][0] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS', '''Axis calibration is in progress''')
+GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED = 1 # Axis calibration succeeded
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][1] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED', '''Axis calibration succeeded''')
+GIMBAL_AXIS_CALIBRATION_STATUS_FAILED = 2 # Axis calibration failed
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][2] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_FAILED', '''Axis calibration failed''')
+GIMBAL_AXIS_CALIBRATION_STATUS_ENUM_END = 3 #
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][3] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_ENUM_END', '''''')
+
+# GIMBAL_AXIS_CALIBRATION_REQUIRED
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'] = {}
+GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN = 0 # Whether or not this axis requires calibration is unknown at this time
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][0] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN', '''Whether or not this axis requires calibration is unknown at this time''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE = 1 # This axis requires calibration
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][1] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE', '''This axis requires calibration''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE = 2 # This axis does not require calibration
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][2] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE', '''This axis does not require calibration''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_ENUM_END = 3 #
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][3] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_ENUM_END', '''''')
+
+# GOPRO_HEARTBEAT_STATUS
+enums['GOPRO_HEARTBEAT_STATUS'] = {}
+GOPRO_HEARTBEAT_STATUS_DISCONNECTED = 0 # No GoPro connected
+enums['GOPRO_HEARTBEAT_STATUS'][0] = EnumEntry('GOPRO_HEARTBEAT_STATUS_DISCONNECTED', '''No GoPro connected''')
+GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE = 1 # The detected GoPro is not HeroBus compatible
+enums['GOPRO_HEARTBEAT_STATUS'][1] = EnumEntry('GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE', '''The detected GoPro is not HeroBus compatible''')
+GOPRO_HEARTBEAT_STATUS_CONNECTED = 2 # A HeroBus compatible GoPro is connected
+enums['GOPRO_HEARTBEAT_STATUS'][2] = EnumEntry('GOPRO_HEARTBEAT_STATUS_CONNECTED', '''A HeroBus compatible GoPro is connected''')
+GOPRO_HEARTBEAT_STATUS_ERROR = 3 # An unrecoverable error was encountered with the connected GoPro, it
+ # may require a power cycle
+enums['GOPRO_HEARTBEAT_STATUS'][3] = EnumEntry('GOPRO_HEARTBEAT_STATUS_ERROR', '''An unrecoverable error was encountered with the connected GoPro, it may require a power cycle''')
+GOPRO_HEARTBEAT_STATUS_ENUM_END = 4 #
+enums['GOPRO_HEARTBEAT_STATUS'][4] = EnumEntry('GOPRO_HEARTBEAT_STATUS_ENUM_END', '''''')
+
+# GOPRO_HEARTBEAT_FLAGS
+enums['GOPRO_HEARTBEAT_FLAGS'] = {}
+GOPRO_FLAG_RECORDING = 1 # GoPro is currently recording
+enums['GOPRO_HEARTBEAT_FLAGS'][1] = EnumEntry('GOPRO_FLAG_RECORDING', '''GoPro is currently recording''')
+GOPRO_HEARTBEAT_FLAGS_ENUM_END = 2 #
+enums['GOPRO_HEARTBEAT_FLAGS'][2] = EnumEntry('GOPRO_HEARTBEAT_FLAGS_ENUM_END', '''''')
+
+# GOPRO_REQUEST_STATUS
+enums['GOPRO_REQUEST_STATUS'] = {}
+GOPRO_REQUEST_SUCCESS = 0 # The write message with ID indicated succeeded
+enums['GOPRO_REQUEST_STATUS'][0] = EnumEntry('GOPRO_REQUEST_SUCCESS', '''The write message with ID indicated succeeded''')
+GOPRO_REQUEST_FAILED = 1 # The write message with ID indicated failed
+enums['GOPRO_REQUEST_STATUS'][1] = EnumEntry('GOPRO_REQUEST_FAILED', '''The write message with ID indicated failed''')
+GOPRO_REQUEST_STATUS_ENUM_END = 2 #
+enums['GOPRO_REQUEST_STATUS'][2] = EnumEntry('GOPRO_REQUEST_STATUS_ENUM_END', '''''')
+
+# GOPRO_COMMAND
+enums['GOPRO_COMMAND'] = {}
+GOPRO_COMMAND_POWER = 0 # (Get/Set)
+enums['GOPRO_COMMAND'][0] = EnumEntry('GOPRO_COMMAND_POWER', '''(Get/Set)''')
+GOPRO_COMMAND_CAPTURE_MODE = 1 # (Get/Set)
+enums['GOPRO_COMMAND'][1] = EnumEntry('GOPRO_COMMAND_CAPTURE_MODE', '''(Get/Set)''')
+GOPRO_COMMAND_SHUTTER = 2 # (___/Set)
+enums['GOPRO_COMMAND'][2] = EnumEntry('GOPRO_COMMAND_SHUTTER', '''(___/Set)''')
+GOPRO_COMMAND_BATTERY = 3 # (Get/___)
+enums['GOPRO_COMMAND'][3] = EnumEntry('GOPRO_COMMAND_BATTERY', '''(Get/___)''')
+GOPRO_COMMAND_MODEL = 4 # (Get/___)
+enums['GOPRO_COMMAND'][4] = EnumEntry('GOPRO_COMMAND_MODEL', '''(Get/___)''')
+GOPRO_COMMAND_VIDEO_SETTINGS = 5 # (Get/Set)
+enums['GOPRO_COMMAND'][5] = EnumEntry('GOPRO_COMMAND_VIDEO_SETTINGS', '''(Get/Set)''')
+GOPRO_COMMAND_LOW_LIGHT = 6 # (Get/Set)
+enums['GOPRO_COMMAND'][6] = EnumEntry('GOPRO_COMMAND_LOW_LIGHT', '''(Get/Set)''')
+GOPRO_COMMAND_PHOTO_RESOLUTION = 7 # (Get/Set)
+enums['GOPRO_COMMAND'][7] = EnumEntry('GOPRO_COMMAND_PHOTO_RESOLUTION', '''(Get/Set)''')
+GOPRO_COMMAND_PHOTO_BURST_RATE = 8 # (Get/Set)
+enums['GOPRO_COMMAND'][8] = EnumEntry('GOPRO_COMMAND_PHOTO_BURST_RATE', '''(Get/Set)''')
+GOPRO_COMMAND_PROTUNE = 9 # (Get/Set)
+enums['GOPRO_COMMAND'][9] = EnumEntry('GOPRO_COMMAND_PROTUNE', '''(Get/Set)''')
+GOPRO_COMMAND_PROTUNE_WHITE_BALANCE = 10 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][10] = EnumEntry('GOPRO_COMMAND_PROTUNE_WHITE_BALANCE', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_COLOUR = 11 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][11] = EnumEntry('GOPRO_COMMAND_PROTUNE_COLOUR', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_GAIN = 12 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][12] = EnumEntry('GOPRO_COMMAND_PROTUNE_GAIN', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_SHARPNESS = 13 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][13] = EnumEntry('GOPRO_COMMAND_PROTUNE_SHARPNESS', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_EXPOSURE = 14 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][14] = EnumEntry('GOPRO_COMMAND_PROTUNE_EXPOSURE', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_TIME = 15 # (Get/Set)
+enums['GOPRO_COMMAND'][15] = EnumEntry('GOPRO_COMMAND_TIME', '''(Get/Set)''')
+GOPRO_COMMAND_CHARGING = 16 # (Get/Set)
+enums['GOPRO_COMMAND'][16] = EnumEntry('GOPRO_COMMAND_CHARGING', '''(Get/Set)''')
+GOPRO_COMMAND_ENUM_END = 17 #
+enums['GOPRO_COMMAND'][17] = EnumEntry('GOPRO_COMMAND_ENUM_END', '''''')
+
+# GOPRO_CAPTURE_MODE
+enums['GOPRO_CAPTURE_MODE'] = {}
+GOPRO_CAPTURE_MODE_VIDEO = 0 # Video mode
+enums['GOPRO_CAPTURE_MODE'][0] = EnumEntry('GOPRO_CAPTURE_MODE_VIDEO', '''Video mode''')
+GOPRO_CAPTURE_MODE_PHOTO = 1 # Photo mode
+enums['GOPRO_CAPTURE_MODE'][1] = EnumEntry('GOPRO_CAPTURE_MODE_PHOTO', '''Photo mode''')
+GOPRO_CAPTURE_MODE_BURST = 2 # Burst mode, hero 3+ only
+enums['GOPRO_CAPTURE_MODE'][2] = EnumEntry('GOPRO_CAPTURE_MODE_BURST', '''Burst mode, hero 3+ only''')
+GOPRO_CAPTURE_MODE_TIME_LAPSE = 3 # Time lapse mode, hero 3+ only
+enums['GOPRO_CAPTURE_MODE'][3] = EnumEntry('GOPRO_CAPTURE_MODE_TIME_LAPSE', '''Time lapse mode, hero 3+ only''')
+GOPRO_CAPTURE_MODE_MULTI_SHOT = 4 # Multi shot mode, hero 4 only
+enums['GOPRO_CAPTURE_MODE'][4] = EnumEntry('GOPRO_CAPTURE_MODE_MULTI_SHOT', '''Multi shot mode, hero 4 only''')
+GOPRO_CAPTURE_MODE_PLAYBACK = 5 # Playback mode, hero 4 only, silver only except when LCD or HDMI is
+ # connected to black
+enums['GOPRO_CAPTURE_MODE'][5] = EnumEntry('GOPRO_CAPTURE_MODE_PLAYBACK', '''Playback mode, hero 4 only, silver only except when LCD or HDMI is connected to black''')
+GOPRO_CAPTURE_MODE_SETUP = 6 # Playback mode, hero 4 only
+enums['GOPRO_CAPTURE_MODE'][6] = EnumEntry('GOPRO_CAPTURE_MODE_SETUP', '''Playback mode, hero 4 only''')
+GOPRO_CAPTURE_MODE_UNKNOWN = 255 # Mode not yet known
+enums['GOPRO_CAPTURE_MODE'][255] = EnumEntry('GOPRO_CAPTURE_MODE_UNKNOWN', '''Mode not yet known''')
+GOPRO_CAPTURE_MODE_ENUM_END = 256 #
+enums['GOPRO_CAPTURE_MODE'][256] = EnumEntry('GOPRO_CAPTURE_MODE_ENUM_END', '''''')
+
+# GOPRO_RESOLUTION
+enums['GOPRO_RESOLUTION'] = {}
+GOPRO_RESOLUTION_480p = 0 # 848 x 480 (480p)
+enums['GOPRO_RESOLUTION'][0] = EnumEntry('GOPRO_RESOLUTION_480p', '''848 x 480 (480p)''')
+GOPRO_RESOLUTION_720p = 1 # 1280 x 720 (720p)
+enums['GOPRO_RESOLUTION'][1] = EnumEntry('GOPRO_RESOLUTION_720p', '''1280 x 720 (720p)''')
+GOPRO_RESOLUTION_960p = 2 # 1280 x 960 (960p)
+enums['GOPRO_RESOLUTION'][2] = EnumEntry('GOPRO_RESOLUTION_960p', '''1280 x 960 (960p)''')
+GOPRO_RESOLUTION_1080p = 3 # 1920 x 1080 (1080p)
+enums['GOPRO_RESOLUTION'][3] = EnumEntry('GOPRO_RESOLUTION_1080p', '''1920 x 1080 (1080p)''')
+GOPRO_RESOLUTION_1440p = 4 # 1920 x 1440 (1440p)
+enums['GOPRO_RESOLUTION'][4] = EnumEntry('GOPRO_RESOLUTION_1440p', '''1920 x 1440 (1440p)''')
+GOPRO_RESOLUTION_2_7k_17_9 = 5 # 2704 x 1440 (2.7k-17:9)
+enums['GOPRO_RESOLUTION'][5] = EnumEntry('GOPRO_RESOLUTION_2_7k_17_9', '''2704 x 1440 (2.7k-17:9)''')
+GOPRO_RESOLUTION_2_7k_16_9 = 6 # 2704 x 1524 (2.7k-16:9)
+enums['GOPRO_RESOLUTION'][6] = EnumEntry('GOPRO_RESOLUTION_2_7k_16_9', '''2704 x 1524 (2.7k-16:9)''')
+GOPRO_RESOLUTION_2_7k_4_3 = 7 # 2704 x 2028 (2.7k-4:3)
+enums['GOPRO_RESOLUTION'][7] = EnumEntry('GOPRO_RESOLUTION_2_7k_4_3', '''2704 x 2028 (2.7k-4:3)''')
+GOPRO_RESOLUTION_4k_16_9 = 8 # 3840 x 2160 (4k-16:9)
+enums['GOPRO_RESOLUTION'][8] = EnumEntry('GOPRO_RESOLUTION_4k_16_9', '''3840 x 2160 (4k-16:9)''')
+GOPRO_RESOLUTION_4k_17_9 = 9 # 4096 x 2160 (4k-17:9)
+enums['GOPRO_RESOLUTION'][9] = EnumEntry('GOPRO_RESOLUTION_4k_17_9', '''4096 x 2160 (4k-17:9)''')
+GOPRO_RESOLUTION_720p_SUPERVIEW = 10 # 1280 x 720 (720p-SuperView)
+enums['GOPRO_RESOLUTION'][10] = EnumEntry('GOPRO_RESOLUTION_720p_SUPERVIEW', '''1280 x 720 (720p-SuperView)''')
+GOPRO_RESOLUTION_1080p_SUPERVIEW = 11 # 1920 x 1080 (1080p-SuperView)
+enums['GOPRO_RESOLUTION'][11] = EnumEntry('GOPRO_RESOLUTION_1080p_SUPERVIEW', '''1920 x 1080 (1080p-SuperView)''')
+GOPRO_RESOLUTION_2_7k_SUPERVIEW = 12 # 2704 x 1520 (2.7k-SuperView)
+enums['GOPRO_RESOLUTION'][12] = EnumEntry('GOPRO_RESOLUTION_2_7k_SUPERVIEW', '''2704 x 1520 (2.7k-SuperView)''')
+GOPRO_RESOLUTION_4k_SUPERVIEW = 13 # 3840 x 2160 (4k-SuperView)
+enums['GOPRO_RESOLUTION'][13] = EnumEntry('GOPRO_RESOLUTION_4k_SUPERVIEW', '''3840 x 2160 (4k-SuperView)''')
+GOPRO_RESOLUTION_ENUM_END = 14 #
+enums['GOPRO_RESOLUTION'][14] = EnumEntry('GOPRO_RESOLUTION_ENUM_END', '''''')
+
+# GOPRO_FRAME_RATE
+enums['GOPRO_FRAME_RATE'] = {}
+GOPRO_FRAME_RATE_12 = 0 # 12 FPS
+enums['GOPRO_FRAME_RATE'][0] = EnumEntry('GOPRO_FRAME_RATE_12', '''12 FPS''')
+GOPRO_FRAME_RATE_15 = 1 # 15 FPS
+enums['GOPRO_FRAME_RATE'][1] = EnumEntry('GOPRO_FRAME_RATE_15', '''15 FPS''')
+GOPRO_FRAME_RATE_24 = 2 # 24 FPS
+enums['GOPRO_FRAME_RATE'][2] = EnumEntry('GOPRO_FRAME_RATE_24', '''24 FPS''')
+GOPRO_FRAME_RATE_25 = 3 # 25 FPS
+enums['GOPRO_FRAME_RATE'][3] = EnumEntry('GOPRO_FRAME_RATE_25', '''25 FPS''')
+GOPRO_FRAME_RATE_30 = 4 # 30 FPS
+enums['GOPRO_FRAME_RATE'][4] = EnumEntry('GOPRO_FRAME_RATE_30', '''30 FPS''')
+GOPRO_FRAME_RATE_48 = 5 # 48 FPS
+enums['GOPRO_FRAME_RATE'][5] = EnumEntry('GOPRO_FRAME_RATE_48', '''48 FPS''')
+GOPRO_FRAME_RATE_50 = 6 # 50 FPS
+enums['GOPRO_FRAME_RATE'][6] = EnumEntry('GOPRO_FRAME_RATE_50', '''50 FPS''')
+GOPRO_FRAME_RATE_60 = 7 # 60 FPS
+enums['GOPRO_FRAME_RATE'][7] = EnumEntry('GOPRO_FRAME_RATE_60', '''60 FPS''')
+GOPRO_FRAME_RATE_80 = 8 # 80 FPS
+enums['GOPRO_FRAME_RATE'][8] = EnumEntry('GOPRO_FRAME_RATE_80', '''80 FPS''')
+GOPRO_FRAME_RATE_90 = 9 # 90 FPS
+enums['GOPRO_FRAME_RATE'][9] = EnumEntry('GOPRO_FRAME_RATE_90', '''90 FPS''')
+GOPRO_FRAME_RATE_100 = 10 # 100 FPS
+enums['GOPRO_FRAME_RATE'][10] = EnumEntry('GOPRO_FRAME_RATE_100', '''100 FPS''')
+GOPRO_FRAME_RATE_120 = 11 # 120 FPS
+enums['GOPRO_FRAME_RATE'][11] = EnumEntry('GOPRO_FRAME_RATE_120', '''120 FPS''')
+GOPRO_FRAME_RATE_240 = 12 # 240 FPS
+enums['GOPRO_FRAME_RATE'][12] = EnumEntry('GOPRO_FRAME_RATE_240', '''240 FPS''')
+GOPRO_FRAME_RATE_12_5 = 13 # 12.5 FPS
+enums['GOPRO_FRAME_RATE'][13] = EnumEntry('GOPRO_FRAME_RATE_12_5', '''12.5 FPS''')
+GOPRO_FRAME_RATE_ENUM_END = 14 #
+enums['GOPRO_FRAME_RATE'][14] = EnumEntry('GOPRO_FRAME_RATE_ENUM_END', '''''')
+
+# GOPRO_FIELD_OF_VIEW
+enums['GOPRO_FIELD_OF_VIEW'] = {}
+GOPRO_FIELD_OF_VIEW_WIDE = 0 # 0x00: Wide
+enums['GOPRO_FIELD_OF_VIEW'][0] = EnumEntry('GOPRO_FIELD_OF_VIEW_WIDE', '''0x00: Wide''')
+GOPRO_FIELD_OF_VIEW_MEDIUM = 1 # 0x01: Medium
+enums['GOPRO_FIELD_OF_VIEW'][1] = EnumEntry('GOPRO_FIELD_OF_VIEW_MEDIUM', '''0x01: Medium''')
+GOPRO_FIELD_OF_VIEW_NARROW = 2 # 0x02: Narrow
+enums['GOPRO_FIELD_OF_VIEW'][2] = EnumEntry('GOPRO_FIELD_OF_VIEW_NARROW', '''0x02: Narrow''')
+GOPRO_FIELD_OF_VIEW_ENUM_END = 3 #
+enums['GOPRO_FIELD_OF_VIEW'][3] = EnumEntry('GOPRO_FIELD_OF_VIEW_ENUM_END', '''''')
+
+# GOPRO_VIDEO_SETTINGS_FLAGS
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'] = {}
+GOPRO_VIDEO_SETTINGS_TV_MODE = 1 # 0=NTSC, 1=PAL
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'][1] = EnumEntry('GOPRO_VIDEO_SETTINGS_TV_MODE', '''0=NTSC, 1=PAL''')
+GOPRO_VIDEO_SETTINGS_FLAGS_ENUM_END = 2 #
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'][2] = EnumEntry('GOPRO_VIDEO_SETTINGS_FLAGS_ENUM_END', '''''')
+
+# GOPRO_PHOTO_RESOLUTION
+enums['GOPRO_PHOTO_RESOLUTION'] = {}
+GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM = 0 # 5MP Medium
+enums['GOPRO_PHOTO_RESOLUTION'][0] = EnumEntry('GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM', '''5MP Medium''')
+GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM = 1 # 7MP Medium
+enums['GOPRO_PHOTO_RESOLUTION'][1] = EnumEntry('GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM', '''7MP Medium''')
+GOPRO_PHOTO_RESOLUTION_7MP_WIDE = 2 # 7MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][2] = EnumEntry('GOPRO_PHOTO_RESOLUTION_7MP_WIDE', '''7MP Wide''')
+GOPRO_PHOTO_RESOLUTION_10MP_WIDE = 3 # 10MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][3] = EnumEntry('GOPRO_PHOTO_RESOLUTION_10MP_WIDE', '''10MP Wide''')
+GOPRO_PHOTO_RESOLUTION_12MP_WIDE = 4 # 12MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][4] = EnumEntry('GOPRO_PHOTO_RESOLUTION_12MP_WIDE', '''12MP Wide''')
+GOPRO_PHOTO_RESOLUTION_ENUM_END = 5 #
+enums['GOPRO_PHOTO_RESOLUTION'][5] = EnumEntry('GOPRO_PHOTO_RESOLUTION_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_WHITE_BALANCE
+enums['GOPRO_PROTUNE_WHITE_BALANCE'] = {}
+GOPRO_PROTUNE_WHITE_BALANCE_AUTO = 0 # Auto
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][0] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_AUTO', '''Auto''')
+GOPRO_PROTUNE_WHITE_BALANCE_3000K = 1 # 3000K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][1] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_3000K', '''3000K''')
+GOPRO_PROTUNE_WHITE_BALANCE_5500K = 2 # 5500K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][2] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_5500K', '''5500K''')
+GOPRO_PROTUNE_WHITE_BALANCE_6500K = 3 # 6500K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][3] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_6500K', '''6500K''')
+GOPRO_PROTUNE_WHITE_BALANCE_RAW = 4 # Camera Raw
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][4] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_RAW', '''Camera Raw''')
+GOPRO_PROTUNE_WHITE_BALANCE_ENUM_END = 5 #
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][5] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_COLOUR
+enums['GOPRO_PROTUNE_COLOUR'] = {}
+GOPRO_PROTUNE_COLOUR_STANDARD = 0 # Auto
+enums['GOPRO_PROTUNE_COLOUR'][0] = EnumEntry('GOPRO_PROTUNE_COLOUR_STANDARD', '''Auto''')
+GOPRO_PROTUNE_COLOUR_NEUTRAL = 1 # Neutral
+enums['GOPRO_PROTUNE_COLOUR'][1] = EnumEntry('GOPRO_PROTUNE_COLOUR_NEUTRAL', '''Neutral''')
+GOPRO_PROTUNE_COLOUR_ENUM_END = 2 #
+enums['GOPRO_PROTUNE_COLOUR'][2] = EnumEntry('GOPRO_PROTUNE_COLOUR_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_GAIN
+enums['GOPRO_PROTUNE_GAIN'] = {}
+GOPRO_PROTUNE_GAIN_400 = 0 # ISO 400
+enums['GOPRO_PROTUNE_GAIN'][0] = EnumEntry('GOPRO_PROTUNE_GAIN_400', '''ISO 400''')
+GOPRO_PROTUNE_GAIN_800 = 1 # ISO 800 (Only Hero 4)
+enums['GOPRO_PROTUNE_GAIN'][1] = EnumEntry('GOPRO_PROTUNE_GAIN_800', '''ISO 800 (Only Hero 4)''')
+GOPRO_PROTUNE_GAIN_1600 = 2 # ISO 1600
+enums['GOPRO_PROTUNE_GAIN'][2] = EnumEntry('GOPRO_PROTUNE_GAIN_1600', '''ISO 1600''')
+GOPRO_PROTUNE_GAIN_3200 = 3 # ISO 3200 (Only Hero 4)
+enums['GOPRO_PROTUNE_GAIN'][3] = EnumEntry('GOPRO_PROTUNE_GAIN_3200', '''ISO 3200 (Only Hero 4)''')
+GOPRO_PROTUNE_GAIN_6400 = 4 # ISO 6400
+enums['GOPRO_PROTUNE_GAIN'][4] = EnumEntry('GOPRO_PROTUNE_GAIN_6400', '''ISO 6400''')
+GOPRO_PROTUNE_GAIN_ENUM_END = 5 #
+enums['GOPRO_PROTUNE_GAIN'][5] = EnumEntry('GOPRO_PROTUNE_GAIN_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_SHARPNESS
+enums['GOPRO_PROTUNE_SHARPNESS'] = {}
+GOPRO_PROTUNE_SHARPNESS_LOW = 0 # Low Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][0] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_LOW', '''Low Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_MEDIUM = 1 # Medium Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][1] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_MEDIUM', '''Medium Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_HIGH = 2 # High Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][2] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_HIGH', '''High Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_ENUM_END = 3 #
+enums['GOPRO_PROTUNE_SHARPNESS'][3] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_EXPOSURE
+enums['GOPRO_PROTUNE_EXPOSURE'] = {}
+GOPRO_PROTUNE_EXPOSURE_NEG_5_0 = 0 # -5.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][0] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_5_0', '''-5.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_4_5 = 1 # -4.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][1] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_4_5', '''-4.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_4_0 = 2 # -4.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][2] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_4_0', '''-4.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_3_5 = 3 # -3.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][3] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_3_5', '''-3.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_3_0 = 4 # -3.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][4] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_3_0', '''-3.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_2_5 = 5 # -2.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][5] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_2_5', '''-2.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_2_0 = 6 # -2.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][6] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_2_0', '''-2.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_1_5 = 7 # -1.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][7] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_1_5', '''-1.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_1_0 = 8 # -1.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][8] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_1_0', '''-1.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_0_5 = 9 # -0.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][9] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_0_5', '''-0.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_ZERO = 10 # 0.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][10] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_ZERO', '''0.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_0_5 = 11 # +0.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][11] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_0_5', '''+0.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_1_0 = 12 # +1.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][12] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_1_0', '''+1.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_1_5 = 13 # +1.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][13] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_1_5', '''+1.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_2_0 = 14 # +2.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][14] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_2_0', '''+2.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_2_5 = 15 # +2.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][15] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_2_5', '''+2.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_3_0 = 16 # +3.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][16] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_3_0', '''+3.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_3_5 = 17 # +3.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][17] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_3_5', '''+3.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_4_0 = 18 # +4.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][18] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_4_0', '''+4.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_4_5 = 19 # +4.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][19] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_4_5', '''+4.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_5_0 = 20 # +5.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][20] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_5_0', '''+5.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_ENUM_END = 21 #
+enums['GOPRO_PROTUNE_EXPOSURE'][21] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_ENUM_END', '''''')
+
+# GOPRO_CHARGING
+enums['GOPRO_CHARGING'] = {}
+GOPRO_CHARGING_DISABLED = 0 # Charging disabled
+enums['GOPRO_CHARGING'][0] = EnumEntry('GOPRO_CHARGING_DISABLED', '''Charging disabled''')
+GOPRO_CHARGING_ENABLED = 1 # Charging enabled
+enums['GOPRO_CHARGING'][1] = EnumEntry('GOPRO_CHARGING_ENABLED', '''Charging enabled''')
+GOPRO_CHARGING_ENUM_END = 2 #
+enums['GOPRO_CHARGING'][2] = EnumEntry('GOPRO_CHARGING_ENUM_END', '''''')
+
+# GOPRO_MODEL
+enums['GOPRO_MODEL'] = {}
+GOPRO_MODEL_UNKNOWN = 0 # Unknown gopro model
+enums['GOPRO_MODEL'][0] = EnumEntry('GOPRO_MODEL_UNKNOWN', '''Unknown gopro model''')
+GOPRO_MODEL_HERO_3_PLUS_SILVER = 1 # Hero 3+ Silver (HeroBus not supported by GoPro)
+enums['GOPRO_MODEL'][1] = EnumEntry('GOPRO_MODEL_HERO_3_PLUS_SILVER', '''Hero 3+ Silver (HeroBus not supported by GoPro)''')
+GOPRO_MODEL_HERO_3_PLUS_BLACK = 2 # Hero 3+ Black
+enums['GOPRO_MODEL'][2] = EnumEntry('GOPRO_MODEL_HERO_3_PLUS_BLACK', '''Hero 3+ Black''')
+GOPRO_MODEL_HERO_4_SILVER = 3 # Hero 4 Silver
+enums['GOPRO_MODEL'][3] = EnumEntry('GOPRO_MODEL_HERO_4_SILVER', '''Hero 4 Silver''')
+GOPRO_MODEL_HERO_4_BLACK = 4 # Hero 4 Black
+enums['GOPRO_MODEL'][4] = EnumEntry('GOPRO_MODEL_HERO_4_BLACK', '''Hero 4 Black''')
+GOPRO_MODEL_ENUM_END = 5 #
+enums['GOPRO_MODEL'][5] = EnumEntry('GOPRO_MODEL_ENUM_END', '''''')
+
+# GOPRO_BURST_RATE
+enums['GOPRO_BURST_RATE'] = {}
+GOPRO_BURST_RATE_3_IN_1_SECOND = 0 # 3 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][0] = EnumEntry('GOPRO_BURST_RATE_3_IN_1_SECOND', '''3 Shots / 1 Second''')
+GOPRO_BURST_RATE_5_IN_1_SECOND = 1 # 5 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][1] = EnumEntry('GOPRO_BURST_RATE_5_IN_1_SECOND', '''5 Shots / 1 Second''')
+GOPRO_BURST_RATE_10_IN_1_SECOND = 2 # 10 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][2] = EnumEntry('GOPRO_BURST_RATE_10_IN_1_SECOND', '''10 Shots / 1 Second''')
+GOPRO_BURST_RATE_10_IN_2_SECOND = 3 # 10 Shots / 2 Second
+enums['GOPRO_BURST_RATE'][3] = EnumEntry('GOPRO_BURST_RATE_10_IN_2_SECOND', '''10 Shots / 2 Second''')
+GOPRO_BURST_RATE_10_IN_3_SECOND = 4 # 10 Shots / 3 Second (Hero 4 Only)
+enums['GOPRO_BURST_RATE'][4] = EnumEntry('GOPRO_BURST_RATE_10_IN_3_SECOND', '''10 Shots / 3 Second (Hero 4 Only)''')
+GOPRO_BURST_RATE_30_IN_1_SECOND = 5 # 30 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][5] = EnumEntry('GOPRO_BURST_RATE_30_IN_1_SECOND', '''30 Shots / 1 Second''')
+GOPRO_BURST_RATE_30_IN_2_SECOND = 6 # 30 Shots / 2 Second
+enums['GOPRO_BURST_RATE'][6] = EnumEntry('GOPRO_BURST_RATE_30_IN_2_SECOND', '''30 Shots / 2 Second''')
+GOPRO_BURST_RATE_30_IN_3_SECOND = 7 # 30 Shots / 3 Second
+enums['GOPRO_BURST_RATE'][7] = EnumEntry('GOPRO_BURST_RATE_30_IN_3_SECOND', '''30 Shots / 3 Second''')
+GOPRO_BURST_RATE_30_IN_6_SECOND = 8 # 30 Shots / 6 Second
+enums['GOPRO_BURST_RATE'][8] = EnumEntry('GOPRO_BURST_RATE_30_IN_6_SECOND', '''30 Shots / 6 Second''')
+GOPRO_BURST_RATE_ENUM_END = 9 #
+enums['GOPRO_BURST_RATE'][9] = EnumEntry('GOPRO_BURST_RATE_ENUM_END', '''''')
+
+# LED_CONTROL_PATTERN
+enums['LED_CONTROL_PATTERN'] = {}
+LED_CONTROL_PATTERN_OFF = 0 # LED patterns off (return control to regular vehicle control)
+enums['LED_CONTROL_PATTERN'][0] = EnumEntry('LED_CONTROL_PATTERN_OFF', '''LED patterns off (return control to regular vehicle control)''')
+LED_CONTROL_PATTERN_FIRMWAREUPDATE = 1 # LEDs show pattern during firmware update
+enums['LED_CONTROL_PATTERN'][1] = EnumEntry('LED_CONTROL_PATTERN_FIRMWAREUPDATE', '''LEDs show pattern during firmware update''')
+LED_CONTROL_PATTERN_CUSTOM = 255 # Custom Pattern using custom bytes fields
+enums['LED_CONTROL_PATTERN'][255] = EnumEntry('LED_CONTROL_PATTERN_CUSTOM', '''Custom Pattern using custom bytes fields''')
+LED_CONTROL_PATTERN_ENUM_END = 256 #
+enums['LED_CONTROL_PATTERN'][256] = EnumEntry('LED_CONTROL_PATTERN_ENUM_END', '''''')
+
+# EKF_STATUS_FLAGS
+enums['EKF_STATUS_FLAGS'] = {}
+EKF_ATTITUDE = 1 # set if EKF's attitude estimate is good
+enums['EKF_STATUS_FLAGS'][1] = EnumEntry('EKF_ATTITUDE', '''set if EKF's attitude estimate is good''')
+EKF_VELOCITY_HORIZ = 2 # set if EKF's horizontal velocity estimate is good
+enums['EKF_STATUS_FLAGS'][2] = EnumEntry('EKF_VELOCITY_HORIZ', '''set if EKF's horizontal velocity estimate is good''')
+EKF_VELOCITY_VERT = 4 # set if EKF's vertical velocity estimate is good
+enums['EKF_STATUS_FLAGS'][4] = EnumEntry('EKF_VELOCITY_VERT', '''set if EKF's vertical velocity estimate is good''')
+EKF_POS_HORIZ_REL = 8 # set if EKF's horizontal position (relative) estimate is good
+enums['EKF_STATUS_FLAGS'][8] = EnumEntry('EKF_POS_HORIZ_REL', '''set if EKF's horizontal position (relative) estimate is good''')
+EKF_POS_HORIZ_ABS = 16 # set if EKF's horizontal position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][16] = EnumEntry('EKF_POS_HORIZ_ABS', '''set if EKF's horizontal position (absolute) estimate is good''')
+EKF_POS_VERT_ABS = 32 # set if EKF's vertical position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][32] = EnumEntry('EKF_POS_VERT_ABS', '''set if EKF's vertical position (absolute) estimate is good''')
+EKF_POS_VERT_AGL = 64 # set if EKF's vertical position (above ground) estimate is good
+enums['EKF_STATUS_FLAGS'][64] = EnumEntry('EKF_POS_VERT_AGL', '''set if EKF's vertical position (above ground) estimate is good''')
+EKF_CONST_POS_MODE = 128 # EKF is in constant position mode and does not know it's absolute or
+ # relative position
+enums['EKF_STATUS_FLAGS'][128] = EnumEntry('EKF_CONST_POS_MODE', '''EKF is in constant position mode and does not know it's absolute or relative position''')
+EKF_PRED_POS_HORIZ_REL = 256 # set if EKF's predicted horizontal position (relative) estimate is good
+enums['EKF_STATUS_FLAGS'][256] = EnumEntry('EKF_PRED_POS_HORIZ_REL', '''set if EKF's predicted horizontal position (relative) estimate is good''')
+EKF_PRED_POS_HORIZ_ABS = 512 # set if EKF's predicted horizontal position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][512] = EnumEntry('EKF_PRED_POS_HORIZ_ABS', '''set if EKF's predicted horizontal position (absolute) estimate is good''')
+EKF_STATUS_FLAGS_ENUM_END = 513 #
+enums['EKF_STATUS_FLAGS'][513] = EnumEntry('EKF_STATUS_FLAGS_ENUM_END', '''''')
+
+# PID_TUNING_AXIS
+enums['PID_TUNING_AXIS'] = {}
+PID_TUNING_ROLL = 1 #
+enums['PID_TUNING_AXIS'][1] = EnumEntry('PID_TUNING_ROLL', '''''')
+PID_TUNING_PITCH = 2 #
+enums['PID_TUNING_AXIS'][2] = EnumEntry('PID_TUNING_PITCH', '''''')
+PID_TUNING_YAW = 3 #
+enums['PID_TUNING_AXIS'][3] = EnumEntry('PID_TUNING_YAW', '''''')
+PID_TUNING_ACCZ = 4 #
+enums['PID_TUNING_AXIS'][4] = EnumEntry('PID_TUNING_ACCZ', '''''')
+PID_TUNING_STEER = 5 #
+enums['PID_TUNING_AXIS'][5] = EnumEntry('PID_TUNING_STEER', '''''')
+PID_TUNING_AXIS_ENUM_END = 6 #
+enums['PID_TUNING_AXIS'][6] = EnumEntry('PID_TUNING_AXIS_ENUM_END', '''''')
+
+# MAG_CAL_STATUS
+enums['MAG_CAL_STATUS'] = {}
+MAG_CAL_NOT_STARTED = 0 #
+enums['MAG_CAL_STATUS'][0] = EnumEntry('MAG_CAL_NOT_STARTED', '''''')
+MAG_CAL_WAITING_TO_START = 1 #
+enums['MAG_CAL_STATUS'][1] = EnumEntry('MAG_CAL_WAITING_TO_START', '''''')
+MAG_CAL_RUNNING_STEP_ONE = 2 #
+enums['MAG_CAL_STATUS'][2] = EnumEntry('MAG_CAL_RUNNING_STEP_ONE', '''''')
+MAG_CAL_RUNNING_STEP_TWO = 3 #
+enums['MAG_CAL_STATUS'][3] = EnumEntry('MAG_CAL_RUNNING_STEP_TWO', '''''')
+MAG_CAL_SUCCESS = 4 #
+enums['MAG_CAL_STATUS'][4] = EnumEntry('MAG_CAL_SUCCESS', '''''')
+MAG_CAL_FAILED = 5 #
+enums['MAG_CAL_STATUS'][5] = EnumEntry('MAG_CAL_FAILED', '''''')
+MAG_CAL_STATUS_ENUM_END = 6 #
+enums['MAG_CAL_STATUS'][6] = EnumEntry('MAG_CAL_STATUS_ENUM_END', '''''')
+
+# MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'] = {}
+MAV_REMOTE_LOG_DATA_BLOCK_STOP = 2147483645 # UAV to stop sending DataFlash blocks
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483645] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_STOP', '''UAV to stop sending DataFlash blocks''')
+MAV_REMOTE_LOG_DATA_BLOCK_START = 2147483646 # UAV to start sending DataFlash blocks
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483646] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_START', '''UAV to start sending DataFlash blocks''')
+MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS_ENUM_END = 2147483647 #
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483647] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS_ENUM_END', '''''')
+
+# MAV_REMOTE_LOG_DATA_BLOCK_STATUSES
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'] = {}
+MAV_REMOTE_LOG_DATA_BLOCK_NACK = 0 # This block has NOT been received
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][0] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_NACK', '''This block has NOT been received''')
+MAV_REMOTE_LOG_DATA_BLOCK_ACK = 1 # This block has been received
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][1] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_ACK', '''This block has been received''')
+MAV_REMOTE_LOG_DATA_BLOCK_STATUSES_ENUM_END = 2 #
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][2] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_STATUSES_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_DYNAMIC_STATE
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'] = {}
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][1] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][2] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][4] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][8] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][16] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ENUM_END = 17 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][17] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_RF_SELECT
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'] = {}
+UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][0] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][1] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][2] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_ENUM_END = 3 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][3] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'] = {}
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][0] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][1] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][2] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][3] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][4] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][5] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_ENUM_END = 6 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][6] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_RF_HEALTH
+enums['UAVIONIX_ADSB_RF_HEALTH'] = {}
+UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][0] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_INITIALIZING', '''''')
+UAVIONIX_ADSB_RF_HEALTH_OK = 1 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][1] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_OK', '''''')
+UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][2] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_FAIL_TX', '''''')
+UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][16] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_FAIL_RX', '''''')
+UAVIONIX_ADSB_RF_HEALTH_ENUM_END = 17 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][17] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'] = {}
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][3] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][4] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][5] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][6] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][7] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][8] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][9] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][10] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][11] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][12] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][13] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][14] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][15] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_ENUM_END = 16 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][16] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'] = {}
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][3] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][4] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][5] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][6] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][7] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_ENUM_END = 8 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][8] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'] = {}
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_ENUM_END = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_EMERGENCY_STATUS
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'] = {}
+UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][0] = EnumEntry('UAVIONIX_ADSB_OUT_NO_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][1] = EnumEntry('UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][2] = EnumEntry('UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][3] = EnumEntry('UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][4] = EnumEntry('UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][5] = EnumEntry('UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][6] = EnumEntry('UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_RESERVED = 7 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][7] = EnumEntry('UAVIONIX_ADSB_OUT_RESERVED', '''''')
+UAVIONIX_ADSB_EMERGENCY_STATUS_ENUM_END = 8 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][8] = EnumEntry('UAVIONIX_ADSB_EMERGENCY_STATUS_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SENSOR_OFFSETS = 150
+MAVLINK_MSG_ID_SET_MAG_OFFSETS = 151
+MAVLINK_MSG_ID_MEMINFO = 152
+MAVLINK_MSG_ID_AP_ADC = 153
+MAVLINK_MSG_ID_DIGICAM_CONFIGURE = 154
+MAVLINK_MSG_ID_DIGICAM_CONTROL = 155
+MAVLINK_MSG_ID_MOUNT_CONFIGURE = 156
+MAVLINK_MSG_ID_MOUNT_CONTROL = 157
+MAVLINK_MSG_ID_MOUNT_STATUS = 158
+MAVLINK_MSG_ID_FENCE_POINT = 160
+MAVLINK_MSG_ID_FENCE_FETCH_POINT = 161
+MAVLINK_MSG_ID_FENCE_STATUS = 162
+MAVLINK_MSG_ID_AHRS = 163
+MAVLINK_MSG_ID_SIMSTATE = 164
+MAVLINK_MSG_ID_HWSTATUS = 165
+MAVLINK_MSG_ID_RADIO = 166
+MAVLINK_MSG_ID_LIMITS_STATUS = 167
+MAVLINK_MSG_ID_WIND = 168
+MAVLINK_MSG_ID_DATA16 = 169
+MAVLINK_MSG_ID_DATA32 = 170
+MAVLINK_MSG_ID_DATA64 = 171
+MAVLINK_MSG_ID_DATA96 = 172
+MAVLINK_MSG_ID_RANGEFINDER = 173
+MAVLINK_MSG_ID_AIRSPEED_AUTOCAL = 174
+MAVLINK_MSG_ID_RALLY_POINT = 175
+MAVLINK_MSG_ID_RALLY_FETCH_POINT = 176
+MAVLINK_MSG_ID_COMPASSMOT_STATUS = 177
+MAVLINK_MSG_ID_AHRS2 = 178
+MAVLINK_MSG_ID_CAMERA_STATUS = 179
+MAVLINK_MSG_ID_CAMERA_FEEDBACK = 180
+MAVLINK_MSG_ID_BATTERY2 = 181
+MAVLINK_MSG_ID_AHRS3 = 182
+MAVLINK_MSG_ID_AUTOPILOT_VERSION_REQUEST = 183
+MAVLINK_MSG_ID_REMOTE_LOG_DATA_BLOCK = 184
+MAVLINK_MSG_ID_REMOTE_LOG_BLOCK_STATUS = 185
+MAVLINK_MSG_ID_LED_CONTROL = 186
+MAVLINK_MSG_ID_MAG_CAL_PROGRESS = 191
+MAVLINK_MSG_ID_MAG_CAL_REPORT = 192
+MAVLINK_MSG_ID_EKF_STATUS_REPORT = 193
+MAVLINK_MSG_ID_PID_TUNING = 194
+MAVLINK_MSG_ID_GIMBAL_REPORT = 200
+MAVLINK_MSG_ID_GIMBAL_CONTROL = 201
+MAVLINK_MSG_ID_GIMBAL_TORQUE_CMD_REPORT = 214
+MAVLINK_MSG_ID_GOPRO_HEARTBEAT = 215
+MAVLINK_MSG_ID_GOPRO_GET_REQUEST = 216
+MAVLINK_MSG_ID_GOPRO_GET_RESPONSE = 217
+MAVLINK_MSG_ID_GOPRO_SET_REQUEST = 218
+MAVLINK_MSG_ID_GOPRO_SET_RESPONSE = 219
+MAVLINK_MSG_ID_RPM = 226
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_sensor_offsets_message(MAVLink_message):
+ '''
+ Offsets and calibrations values for hardware sensors. This
+ makes it easier to debug the calibration process.
+ '''
+ id = MAVLINK_MSG_ID_SENSOR_OFFSETS
+ name = 'SENSOR_OFFSETS'
+ fieldnames = ['mag_ofs_x', 'mag_ofs_y', 'mag_ofs_z', 'mag_declination', 'raw_press', 'raw_temp', 'gyro_cal_x', 'gyro_cal_y', 'gyro_cal_z', 'accel_cal_x', 'accel_cal_y', 'accel_cal_z']
+ ordered_fieldnames = [ 'mag_declination', 'raw_press', 'raw_temp', 'gyro_cal_x', 'gyro_cal_y', 'gyro_cal_z', 'accel_cal_x', 'accel_cal_y', 'accel_cal_z', 'mag_ofs_x', 'mag_ofs_y', 'mag_ofs_z' ]
+ format = ' MAV. Also
+ used to return a point from MAV -> GCS
+ '''
+ id = MAVLINK_MSG_ID_FENCE_POINT
+ name = 'FENCE_POINT'
+ fieldnames = ['target_system', 'target_component', 'idx', 'count', 'lat', 'lng']
+ ordered_fieldnames = [ 'lat', 'lng', 'target_system', 'target_component', 'idx', 'count' ]
+ format = ' MAV. Also
+ used to return a point from MAV -> GCS
+ '''
+ id = MAVLINK_MSG_ID_RALLY_POINT
+ name = 'RALLY_POINT'
+ fieldnames = ['target_system', 'target_component', 'idx', 'count', 'lat', 'lng', 'alt', 'break_alt', 'land_dir', 'flags']
+ ordered_fieldnames = [ 'lat', 'lng', 'alt', 'break_alt', 'land_dir', 'target_system', 'target_component', 'idx', 'count', 'flags' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack(' MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point (float)
+ lng : Longitude of point (float)
+
+ '''
+ return MAVLink_fence_point_message(target_system, target_component, idx, count, lat, lng)
+
+ def fence_point_send(self, target_system, target_component, idx, count, lat, lng, force_mavlink1=False):
+ '''
+ A fence point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point (float)
+ lng : Longitude of point (float)
+
+ '''
+ return self.send(self.fence_point_encode(target_system, target_component, idx, count, lat, lng), force_mavlink1=force_mavlink1)
+
+ def fence_fetch_point_encode(self, target_system, target_component, idx):
+ '''
+ Request a current fence point from MAV
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+
+ '''
+ return MAVLink_fence_fetch_point_message(target_system, target_component, idx)
+
+ def fence_fetch_point_send(self, target_system, target_component, idx, force_mavlink1=False):
+ '''
+ Request a current fence point from MAV
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+
+ '''
+ return self.send(self.fence_fetch_point_encode(target_system, target_component, idx), force_mavlink1=force_mavlink1)
+
+ def fence_status_encode(self, breach_status, breach_count, breach_type, breach_time):
+ '''
+ Status of geo-fencing. Sent in extended status stream when fencing
+ enabled
+
+ breach_status : 0 if currently inside fence, 1 if outside (uint8_t)
+ breach_count : number of fence breaches (uint16_t)
+ breach_type : last breach type (see FENCE_BREACH_* enum) (uint8_t)
+ breach_time : time of last breach in milliseconds since boot (uint32_t)
+
+ '''
+ return MAVLink_fence_status_message(breach_status, breach_count, breach_type, breach_time)
+
+ def fence_status_send(self, breach_status, breach_count, breach_type, breach_time, force_mavlink1=False):
+ '''
+ Status of geo-fencing. Sent in extended status stream when fencing
+ enabled
+
+ breach_status : 0 if currently inside fence, 1 if outside (uint8_t)
+ breach_count : number of fence breaches (uint16_t)
+ breach_type : last breach type (see FENCE_BREACH_* enum) (uint8_t)
+ breach_time : time of last breach in milliseconds since boot (uint32_t)
+
+ '''
+ return self.send(self.fence_status_encode(breach_status, breach_count, breach_type, breach_time), force_mavlink1=force_mavlink1)
+
+ def ahrs_encode(self, omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw):
+ '''
+ Status of DCM attitude estimator
+
+ omegaIx : X gyro drift estimate rad/s (float)
+ omegaIy : Y gyro drift estimate rad/s (float)
+ omegaIz : Z gyro drift estimate rad/s (float)
+ accel_weight : average accel_weight (float)
+ renorm_val : average renormalisation value (float)
+ error_rp : average error_roll_pitch value (float)
+ error_yaw : average error_yaw value (float)
+
+ '''
+ return MAVLink_ahrs_message(omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw)
+
+ def ahrs_send(self, omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw, force_mavlink1=False):
+ '''
+ Status of DCM attitude estimator
+
+ omegaIx : X gyro drift estimate rad/s (float)
+ omegaIy : Y gyro drift estimate rad/s (float)
+ omegaIz : Z gyro drift estimate rad/s (float)
+ accel_weight : average accel_weight (float)
+ renorm_val : average renormalisation value (float)
+ error_rp : average error_roll_pitch value (float)
+ error_yaw : average error_yaw value (float)
+
+ '''
+ return self.send(self.ahrs_encode(omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw), force_mavlink1=force_mavlink1)
+
+ def simstate_encode(self, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng):
+ '''
+ Status of simulation environment, if used
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return MAVLink_simstate_message(roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng)
+
+ def simstate_send(self, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return self.send(self.simstate_encode(roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng), force_mavlink1=force_mavlink1)
+
+ def hwstatus_encode(self, Vcc, I2Cerr):
+ '''
+ Status of key hardware
+
+ Vcc : board voltage (mV) (uint16_t)
+ I2Cerr : I2C error count (uint8_t)
+
+ '''
+ return MAVLink_hwstatus_message(Vcc, I2Cerr)
+
+ def hwstatus_send(self, Vcc, I2Cerr, force_mavlink1=False):
+ '''
+ Status of key hardware
+
+ Vcc : board voltage (mV) (uint16_t)
+ I2Cerr : I2C error count (uint8_t)
+
+ '''
+ return self.send(self.hwstatus_encode(Vcc, I2Cerr), force_mavlink1=force_mavlink1)
+
+ def radio_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio
+
+ rssi : local signal strength (uint8_t)
+ remrssi : remote signal strength (uint8_t)
+ txbuf : how full the tx buffer is as a percentage (uint8_t)
+ noise : background noise level (uint8_t)
+ remnoise : remote background noise level (uint8_t)
+ rxerrors : receive errors (uint16_t)
+ fixed : count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio
+
+ rssi : local signal strength (uint8_t)
+ remrssi : remote signal strength (uint8_t)
+ txbuf : how full the tx buffer is as a percentage (uint8_t)
+ noise : background noise level (uint8_t)
+ remnoise : remote background noise level (uint8_t)
+ rxerrors : receive errors (uint16_t)
+ fixed : count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def limits_status_encode(self, limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered):
+ '''
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is
+ enabled
+
+ limits_state : state of AP_Limits, (see enum LimitState, LIMITS_STATE) (uint8_t)
+ last_trigger : time of last breach in milliseconds since boot (uint32_t)
+ last_action : time of last recovery action in milliseconds since boot (uint32_t)
+ last_recovery : time of last successful recovery in milliseconds since boot (uint32_t)
+ last_clear : time of last all-clear in milliseconds since boot (uint32_t)
+ breach_count : number of fence breaches (uint16_t)
+ mods_enabled : AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_required : AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_triggered : AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+
+ '''
+ return MAVLink_limits_status_message(limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered)
+
+ def limits_status_send(self, limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered, force_mavlink1=False):
+ '''
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is
+ enabled
+
+ limits_state : state of AP_Limits, (see enum LimitState, LIMITS_STATE) (uint8_t)
+ last_trigger : time of last breach in milliseconds since boot (uint32_t)
+ last_action : time of last recovery action in milliseconds since boot (uint32_t)
+ last_recovery : time of last successful recovery in milliseconds since boot (uint32_t)
+ last_clear : time of last all-clear in milliseconds since boot (uint32_t)
+ breach_count : number of fence breaches (uint16_t)
+ mods_enabled : AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_required : AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_triggered : AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+
+ '''
+ return self.send(self.limits_status_encode(limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered), force_mavlink1=force_mavlink1)
+
+ def wind_encode(self, direction, speed, speed_z):
+ '''
+ Wind estimation
+
+ direction : wind direction that wind is coming from (degrees) (float)
+ speed : wind speed in ground plane (m/s) (float)
+ speed_z : vertical wind speed (m/s) (float)
+
+ '''
+ return MAVLink_wind_message(direction, speed, speed_z)
+
+ def wind_send(self, direction, speed, speed_z, force_mavlink1=False):
+ '''
+ Wind estimation
+
+ direction : wind direction that wind is coming from (degrees) (float)
+ speed : wind speed in ground plane (m/s) (float)
+ speed_z : vertical wind speed (m/s) (float)
+
+ '''
+ return self.send(self.wind_encode(direction, speed, speed_z), force_mavlink1=force_mavlink1)
+
+ def data16_encode(self, type, len, data):
+ '''
+ Data packet, size 16
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data16_message(type, len, data)
+
+ def data16_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 16
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data16_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data32_encode(self, type, len, data):
+ '''
+ Data packet, size 32
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data32_message(type, len, data)
+
+ def data32_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 32
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data32_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data64_encode(self, type, len, data):
+ '''
+ Data packet, size 64
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data64_message(type, len, data)
+
+ def data64_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 64
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data64_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data96_encode(self, type, len, data):
+ '''
+ Data packet, size 96
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data96_message(type, len, data)
+
+ def data96_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 96
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data96_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def rangefinder_encode(self, distance, voltage):
+ '''
+ Rangefinder reporting
+
+ distance : distance in meters (float)
+ voltage : raw voltage if available, zero otherwise (float)
+
+ '''
+ return MAVLink_rangefinder_message(distance, voltage)
+
+ def rangefinder_send(self, distance, voltage, force_mavlink1=False):
+ '''
+ Rangefinder reporting
+
+ distance : distance in meters (float)
+ voltage : raw voltage if available, zero otherwise (float)
+
+ '''
+ return self.send(self.rangefinder_encode(distance, voltage), force_mavlink1=force_mavlink1)
+
+ def airspeed_autocal_encode(self, vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz):
+ '''
+ Airspeed auto-calibration
+
+ vx : GPS velocity north m/s (float)
+ vy : GPS velocity east m/s (float)
+ vz : GPS velocity down m/s (float)
+ diff_pressure : Differential pressure pascals (float)
+ EAS2TAS : Estimated to true airspeed ratio (float)
+ ratio : Airspeed ratio (float)
+ state_x : EKF state x (float)
+ state_y : EKF state y (float)
+ state_z : EKF state z (float)
+ Pax : EKF Pax (float)
+ Pby : EKF Pby (float)
+ Pcz : EKF Pcz (float)
+
+ '''
+ return MAVLink_airspeed_autocal_message(vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz)
+
+ def airspeed_autocal_send(self, vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz, force_mavlink1=False):
+ '''
+ Airspeed auto-calibration
+
+ vx : GPS velocity north m/s (float)
+ vy : GPS velocity east m/s (float)
+ vz : GPS velocity down m/s (float)
+ diff_pressure : Differential pressure pascals (float)
+ EAS2TAS : Estimated to true airspeed ratio (float)
+ ratio : Airspeed ratio (float)
+ state_x : EKF state x (float)
+ state_y : EKF state y (float)
+ state_z : EKF state z (float)
+ Pax : EKF Pax (float)
+ Pby : EKF Pby (float)
+ Pcz : EKF Pcz (float)
+
+ '''
+ return self.send(self.airspeed_autocal_encode(vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz), force_mavlink1=force_mavlink1)
+
+ def rally_point_encode(self, target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags):
+ '''
+ A rally point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point in degrees * 1E7 (int32_t)
+ lng : Longitude of point in degrees * 1E7 (int32_t)
+ alt : Transit / loiter altitude in meters relative to home (int16_t)
+ break_alt : Break altitude in meters relative to home (int16_t)
+ land_dir : Heading to aim for when landing. In centi-degrees. (uint16_t)
+ flags : See RALLY_FLAGS enum for definition of the bitmask. (uint8_t)
+
+ '''
+ return MAVLink_rally_point_message(target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags)
+
+ def rally_point_send(self, target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags, force_mavlink1=False):
+ '''
+ A rally point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point in degrees * 1E7 (int32_t)
+ lng : Longitude of point in degrees * 1E7 (int32_t)
+ alt : Transit / loiter altitude in meters relative to home (int16_t)
+ break_alt : Break altitude in meters relative to home (int16_t)
+ land_dir : Heading to aim for when landing. In centi-degrees. (uint16_t)
+ flags : See RALLY_FLAGS enum for definition of the bitmask. (uint8_t)
+
+ '''
+ return self.send(self.rally_point_encode(target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags), force_mavlink1=force_mavlink1)
+
+ def rally_fetch_point_encode(self, target_system, target_component, idx):
+ '''
+ Request a current rally point from MAV. MAV should respond with a
+ RALLY_POINT message. MAV should not respond if the
+ request is invalid.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+
+ '''
+ return MAVLink_rally_fetch_point_message(target_system, target_component, idx)
+
+ def rally_fetch_point_send(self, target_system, target_component, idx, force_mavlink1=False):
+ '''
+ Request a current rally point from MAV. MAV should respond with a
+ RALLY_POINT message. MAV should not respond if the
+ request is invalid.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+
+ '''
+ return self.send(self.rally_fetch_point_encode(target_system, target_component, idx), force_mavlink1=force_mavlink1)
+
+ def compassmot_status_encode(self, throttle, current, interference, CompensationX, CompensationY, CompensationZ):
+ '''
+ Status of compassmot calibration
+
+ throttle : throttle (percent*10) (uint16_t)
+ current : current (amps) (float)
+ interference : interference (percent) (uint16_t)
+ CompensationX : Motor Compensation X (float)
+ CompensationY : Motor Compensation Y (float)
+ CompensationZ : Motor Compensation Z (float)
+
+ '''
+ return MAVLink_compassmot_status_message(throttle, current, interference, CompensationX, CompensationY, CompensationZ)
+
+ def compassmot_status_send(self, throttle, current, interference, CompensationX, CompensationY, CompensationZ, force_mavlink1=False):
+ '''
+ Status of compassmot calibration
+
+ throttle : throttle (percent*10) (uint16_t)
+ current : current (amps) (float)
+ interference : interference (percent) (uint16_t)
+ CompensationX : Motor Compensation X (float)
+ CompensationY : Motor Compensation Y (float)
+ CompensationZ : Motor Compensation Z (float)
+
+ '''
+ return self.send(self.compassmot_status_encode(throttle, current, interference, CompensationX, CompensationY, CompensationZ), force_mavlink1=force_mavlink1)
+
+ def ahrs2_encode(self, roll, pitch, yaw, altitude, lat, lng):
+ '''
+ Status of secondary AHRS filter if available
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return MAVLink_ahrs2_message(roll, pitch, yaw, altitude, lat, lng)
+
+ def ahrs2_send(self, roll, pitch, yaw, altitude, lat, lng, force_mavlink1=False):
+ '''
+ Status of secondary AHRS filter if available
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return self.send(self.ahrs2_encode(roll, pitch, yaw, altitude, lat, lng), force_mavlink1=force_mavlink1)
+
+ def camera_status_encode(self, time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4):
+ '''
+ Camera Event
+
+ time_usec : Image timestamp (microseconds since UNIX epoch, according to camera clock) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ event_id : See CAMERA_STATUS_TYPES enum for definition of the bitmask (uint8_t)
+ p1 : Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p2 : Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p3 : Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p4 : Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+
+ '''
+ return MAVLink_camera_status_message(time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4)
+
+ def camera_status_send(self, time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4, force_mavlink1=False):
+ '''
+ Camera Event
+
+ time_usec : Image timestamp (microseconds since UNIX epoch, according to camera clock) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ event_id : See CAMERA_STATUS_TYPES enum for definition of the bitmask (uint8_t)
+ p1 : Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p2 : Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p3 : Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p4 : Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+
+ '''
+ return self.send(self.camera_status_encode(time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4), force_mavlink1=force_mavlink1)
+
+ def camera_feedback_encode(self, time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags):
+ '''
+ Camera Capture Feedback
+
+ time_usec : Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ lat : Latitude in (deg * 1E7) (int32_t)
+ lng : Longitude in (deg * 1E7) (int32_t)
+ alt_msl : Altitude Absolute (meters AMSL) (float)
+ alt_rel : Altitude Relative (meters above HOME location) (float)
+ roll : Camera Roll angle (earth frame, degrees, +-180) (float)
+ pitch : Camera Pitch angle (earth frame, degrees, +-180) (float)
+ yaw : Camera Yaw (earth frame, degrees, 0-360, true) (float)
+ foc_len : Focal Length (mm) (float)
+ flags : See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask (uint8_t)
+
+ '''
+ return MAVLink_camera_feedback_message(time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags)
+
+ def camera_feedback_send(self, time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags, force_mavlink1=False):
+ '''
+ Camera Capture Feedback
+
+ time_usec : Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ lat : Latitude in (deg * 1E7) (int32_t)
+ lng : Longitude in (deg * 1E7) (int32_t)
+ alt_msl : Altitude Absolute (meters AMSL) (float)
+ alt_rel : Altitude Relative (meters above HOME location) (float)
+ roll : Camera Roll angle (earth frame, degrees, +-180) (float)
+ pitch : Camera Pitch angle (earth frame, degrees, +-180) (float)
+ yaw : Camera Yaw (earth frame, degrees, 0-360, true) (float)
+ foc_len : Focal Length (mm) (float)
+ flags : See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask (uint8_t)
+
+ '''
+ return self.send(self.camera_feedback_encode(time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags), force_mavlink1=force_mavlink1)
+
+ def battery2_encode(self, voltage, current_battery):
+ '''
+ 2nd Battery status
+
+ voltage : voltage in millivolts (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+
+ '''
+ return MAVLink_battery2_message(voltage, current_battery)
+
+ def battery2_send(self, voltage, current_battery, force_mavlink1=False):
+ '''
+ 2nd Battery status
+
+ voltage : voltage in millivolts (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+
+ '''
+ return self.send(self.battery2_encode(voltage, current_battery), force_mavlink1=force_mavlink1)
+
+ def ahrs3_encode(self, roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4):
+ '''
+ Status of third AHRS filter if available. This is for ANU research
+ group (Ali and Sean)
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+ v1 : test variable1 (float)
+ v2 : test variable2 (float)
+ v3 : test variable3 (float)
+ v4 : test variable4 (float)
+
+ '''
+ return MAVLink_ahrs3_message(roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4)
+
+ def ahrs3_send(self, roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4, force_mavlink1=False):
+ '''
+ Status of third AHRS filter if available. This is for ANU research
+ group (Ali and Sean)
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+ v1 : test variable1 (float)
+ v2 : test variable2 (float)
+ v3 : test variable3 (float)
+ v4 : test variable4 (float)
+
+ '''
+ return self.send(self.ahrs3_encode(roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_request_encode(self, target_system, target_component):
+ '''
+ Request the autopilot version from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_autopilot_version_request_message(target_system, target_component)
+
+ def autopilot_version_request_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the autopilot version from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.autopilot_version_request_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def remote_log_data_block_encode(self, target_system, target_component, seqno, data):
+ '''
+ Send a block of log data to remote location
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ data : log data block (uint8_t)
+
+ '''
+ return MAVLink_remote_log_data_block_message(target_system, target_component, seqno, data)
+
+ def remote_log_data_block_send(self, target_system, target_component, seqno, data, force_mavlink1=False):
+ '''
+ Send a block of log data to remote location
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ data : log data block (uint8_t)
+
+ '''
+ return self.send(self.remote_log_data_block_encode(target_system, target_component, seqno, data), force_mavlink1=force_mavlink1)
+
+ def remote_log_block_status_encode(self, target_system, target_component, seqno, status):
+ '''
+ Send Status of each log block that autopilot board might have sent
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ status : log data block status (uint8_t)
+
+ '''
+ return MAVLink_remote_log_block_status_message(target_system, target_component, seqno, status)
+
+ def remote_log_block_status_send(self, target_system, target_component, seqno, status, force_mavlink1=False):
+ '''
+ Send Status of each log block that autopilot board might have sent
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ status : log data block status (uint8_t)
+
+ '''
+ return self.send(self.remote_log_block_status_encode(target_system, target_component, seqno, status), force_mavlink1=force_mavlink1)
+
+ def led_control_encode(self, target_system, target_component, instance, pattern, custom_len, custom_bytes):
+ '''
+ Control vehicle LEDs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ instance : Instance (LED instance to control or 255 for all LEDs) (uint8_t)
+ pattern : Pattern (see LED_PATTERN_ENUM) (uint8_t)
+ custom_len : Custom Byte Length (uint8_t)
+ custom_bytes : Custom Bytes (uint8_t)
+
+ '''
+ return MAVLink_led_control_message(target_system, target_component, instance, pattern, custom_len, custom_bytes)
+
+ def led_control_send(self, target_system, target_component, instance, pattern, custom_len, custom_bytes, force_mavlink1=False):
+ '''
+ Control vehicle LEDs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ instance : Instance (LED instance to control or 255 for all LEDs) (uint8_t)
+ pattern : Pattern (see LED_PATTERN_ENUM) (uint8_t)
+ custom_len : Custom Byte Length (uint8_t)
+ custom_bytes : Custom Bytes (uint8_t)
+
+ '''
+ return self.send(self.led_control_encode(target_system, target_component, instance, pattern, custom_len, custom_bytes), force_mavlink1=force_mavlink1)
+
+ def mag_cal_progress_encode(self, compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z):
+ '''
+ Reports progress of compass calibration.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ attempt : Attempt number (uint8_t)
+ completion_pct : Completion percentage (uint8_t)
+ completion_mask : Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid) (uint8_t)
+ direction_x : Body frame direction vector for display (float)
+ direction_y : Body frame direction vector for display (float)
+ direction_z : Body frame direction vector for display (float)
+
+ '''
+ return MAVLink_mag_cal_progress_message(compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z)
+
+ def mag_cal_progress_send(self, compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z, force_mavlink1=False):
+ '''
+ Reports progress of compass calibration.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ attempt : Attempt number (uint8_t)
+ completion_pct : Completion percentage (uint8_t)
+ completion_mask : Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid) (uint8_t)
+ direction_x : Body frame direction vector for display (float)
+ direction_y : Body frame direction vector for display (float)
+ direction_z : Body frame direction vector for display (float)
+
+ '''
+ return self.send(self.mag_cal_progress_encode(compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z), force_mavlink1=force_mavlink1)
+
+ def mag_cal_report_encode(self, compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z):
+ '''
+ Reports results of completed compass calibration. Sent until
+ MAG_CAL_ACK received.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ autosaved : 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters (uint8_t)
+ fitness : RMS milligauss residuals (float)
+ ofs_x : X offset (float)
+ ofs_y : Y offset (float)
+ ofs_z : Z offset (float)
+ diag_x : X diagonal (matrix 11) (float)
+ diag_y : Y diagonal (matrix 22) (float)
+ diag_z : Z diagonal (matrix 33) (float)
+ offdiag_x : X off-diagonal (matrix 12 and 21) (float)
+ offdiag_y : Y off-diagonal (matrix 13 and 31) (float)
+ offdiag_z : Z off-diagonal (matrix 32 and 23) (float)
+
+ '''
+ return MAVLink_mag_cal_report_message(compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z)
+
+ def mag_cal_report_send(self, compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z, force_mavlink1=False):
+ '''
+ Reports results of completed compass calibration. Sent until
+ MAG_CAL_ACK received.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ autosaved : 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters (uint8_t)
+ fitness : RMS milligauss residuals (float)
+ ofs_x : X offset (float)
+ ofs_y : Y offset (float)
+ ofs_z : Z offset (float)
+ diag_x : X diagonal (matrix 11) (float)
+ diag_y : Y diagonal (matrix 22) (float)
+ diag_z : Z diagonal (matrix 33) (float)
+ offdiag_x : X off-diagonal (matrix 12 and 21) (float)
+ offdiag_y : Y off-diagonal (matrix 13 and 31) (float)
+ offdiag_z : Z off-diagonal (matrix 32 and 23) (float)
+
+ '''
+ return self.send(self.mag_cal_report_encode(compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z), force_mavlink1=force_mavlink1)
+
+ def ekf_status_report_encode(self, flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance):
+ '''
+ EKF Status message including flags and variances
+
+ flags : Flags (uint16_t)
+ velocity_variance : Velocity variance (float)
+ pos_horiz_variance : Horizontal Position variance (float)
+ pos_vert_variance : Vertical Position variance (float)
+ compass_variance : Compass variance (float)
+ terrain_alt_variance : Terrain Altitude variance (float)
+
+ '''
+ return MAVLink_ekf_status_report_message(flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance)
+
+ def ekf_status_report_send(self, flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance, force_mavlink1=False):
+ '''
+ EKF Status message including flags and variances
+
+ flags : Flags (uint16_t)
+ velocity_variance : Velocity variance (float)
+ pos_horiz_variance : Horizontal Position variance (float)
+ pos_vert_variance : Vertical Position variance (float)
+ compass_variance : Compass variance (float)
+ terrain_alt_variance : Terrain Altitude variance (float)
+
+ '''
+ return self.send(self.ekf_status_report_encode(flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance), force_mavlink1=force_mavlink1)
+
+ def pid_tuning_encode(self, axis, desired, achieved, FF, P, I, D):
+ '''
+ PID tuning information
+
+ axis : axis (uint8_t)
+ desired : desired rate (degrees/s) (float)
+ achieved : achieved rate (degrees/s) (float)
+ FF : FF component (float)
+ P : P component (float)
+ I : I component (float)
+ D : D component (float)
+
+ '''
+ return MAVLink_pid_tuning_message(axis, desired, achieved, FF, P, I, D)
+
+ def pid_tuning_send(self, axis, desired, achieved, FF, P, I, D, force_mavlink1=False):
+ '''
+ PID tuning information
+
+ axis : axis (uint8_t)
+ desired : desired rate (degrees/s) (float)
+ achieved : achieved rate (degrees/s) (float)
+ FF : FF component (float)
+ P : P component (float)
+ I : I component (float)
+ D : D component (float)
+
+ '''
+ return self.send(self.pid_tuning_encode(axis, desired, achieved, FF, P, I, D), force_mavlink1=force_mavlink1)
+
+ def gimbal_report_encode(self, target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az):
+ '''
+ 3 axis gimbal mesuraments
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ delta_time : Time since last update (seconds) (float)
+ delta_angle_x : Delta angle X (radians) (float)
+ delta_angle_y : Delta angle Y (radians) (float)
+ delta_angle_z : Delta angle X (radians) (float)
+ delta_velocity_x : Delta velocity X (m/s) (float)
+ delta_velocity_y : Delta velocity Y (m/s) (float)
+ delta_velocity_z : Delta velocity Z (m/s) (float)
+ joint_roll : Joint ROLL (radians) (float)
+ joint_el : Joint EL (radians) (float)
+ joint_az : Joint AZ (radians) (float)
+
+ '''
+ return MAVLink_gimbal_report_message(target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az)
+
+ def gimbal_report_send(self, target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az, force_mavlink1=False):
+ '''
+ 3 axis gimbal mesuraments
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ delta_time : Time since last update (seconds) (float)
+ delta_angle_x : Delta angle X (radians) (float)
+ delta_angle_y : Delta angle Y (radians) (float)
+ delta_angle_z : Delta angle X (radians) (float)
+ delta_velocity_x : Delta velocity X (m/s) (float)
+ delta_velocity_y : Delta velocity Y (m/s) (float)
+ delta_velocity_z : Delta velocity Z (m/s) (float)
+ joint_roll : Joint ROLL (radians) (float)
+ joint_el : Joint EL (radians) (float)
+ joint_az : Joint AZ (radians) (float)
+
+ '''
+ return self.send(self.gimbal_report_encode(target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az), force_mavlink1=force_mavlink1)
+
+ def gimbal_control_encode(self, target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z):
+ '''
+ Control message for rate gimbal
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ demanded_rate_x : Demanded angular rate X (rad/s) (float)
+ demanded_rate_y : Demanded angular rate Y (rad/s) (float)
+ demanded_rate_z : Demanded angular rate Z (rad/s) (float)
+
+ '''
+ return MAVLink_gimbal_control_message(target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z)
+
+ def gimbal_control_send(self, target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z, force_mavlink1=False):
+ '''
+ Control message for rate gimbal
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ demanded_rate_x : Demanded angular rate X (rad/s) (float)
+ demanded_rate_y : Demanded angular rate Y (rad/s) (float)
+ demanded_rate_z : Demanded angular rate Z (rad/s) (float)
+
+ '''
+ return self.send(self.gimbal_control_encode(target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z), force_mavlink1=force_mavlink1)
+
+ def gimbal_torque_cmd_report_encode(self, target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd):
+ '''
+ 100 Hz gimbal torque command telemetry
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ rl_torque_cmd : Roll Torque Command (int16_t)
+ el_torque_cmd : Elevation Torque Command (int16_t)
+ az_torque_cmd : Azimuth Torque Command (int16_t)
+
+ '''
+ return MAVLink_gimbal_torque_cmd_report_message(target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd)
+
+ def gimbal_torque_cmd_report_send(self, target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd, force_mavlink1=False):
+ '''
+ 100 Hz gimbal torque command telemetry
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ rl_torque_cmd : Roll Torque Command (int16_t)
+ el_torque_cmd : Elevation Torque Command (int16_t)
+ az_torque_cmd : Azimuth Torque Command (int16_t)
+
+ '''
+ return self.send(self.gimbal_torque_cmd_report_encode(target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd), force_mavlink1=force_mavlink1)
+
+ def gopro_heartbeat_encode(self, status, capture_mode, flags):
+ '''
+ Heartbeat from a HeroBus attached GoPro
+
+ status : Status (uint8_t)
+ capture_mode : Current capture mode (uint8_t)
+ flags : additional status bits (uint8_t)
+
+ '''
+ return MAVLink_gopro_heartbeat_message(status, capture_mode, flags)
+
+ def gopro_heartbeat_send(self, status, capture_mode, flags, force_mavlink1=False):
+ '''
+ Heartbeat from a HeroBus attached GoPro
+
+ status : Status (uint8_t)
+ capture_mode : Current capture mode (uint8_t)
+ flags : additional status bits (uint8_t)
+
+ '''
+ return self.send(self.gopro_heartbeat_encode(status, capture_mode, flags), force_mavlink1=force_mavlink1)
+
+ def gopro_get_request_encode(self, target_system, target_component, cmd_id):
+ '''
+ Request a GOPRO_COMMAND response from the GoPro
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+
+ '''
+ return MAVLink_gopro_get_request_message(target_system, target_component, cmd_id)
+
+ def gopro_get_request_send(self, target_system, target_component, cmd_id, force_mavlink1=False):
+ '''
+ Request a GOPRO_COMMAND response from the GoPro
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+
+ '''
+ return self.send(self.gopro_get_request_encode(target_system, target_component, cmd_id), force_mavlink1=force_mavlink1)
+
+ def gopro_get_response_encode(self, cmd_id, status, value):
+ '''
+ Response from a GOPRO_COMMAND get request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return MAVLink_gopro_get_response_message(cmd_id, status, value)
+
+ def gopro_get_response_send(self, cmd_id, status, value, force_mavlink1=False):
+ '''
+ Response from a GOPRO_COMMAND get request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return self.send(self.gopro_get_response_encode(cmd_id, status, value), force_mavlink1=force_mavlink1)
+
+ def gopro_set_request_encode(self, target_system, target_component, cmd_id, value):
+ '''
+ Request to set a GOPRO_COMMAND with a desired
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return MAVLink_gopro_set_request_message(target_system, target_component, cmd_id, value)
+
+ def gopro_set_request_send(self, target_system, target_component, cmd_id, value, force_mavlink1=False):
+ '''
+ Request to set a GOPRO_COMMAND with a desired
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return self.send(self.gopro_set_request_encode(target_system, target_component, cmd_id, value), force_mavlink1=force_mavlink1)
+
+ def gopro_set_response_encode(self, cmd_id, status):
+ '''
+ Response from a GOPRO_COMMAND set request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+
+ '''
+ return MAVLink_gopro_set_response_message(cmd_id, status)
+
+ def gopro_set_response_send(self, cmd_id, status, force_mavlink1=False):
+ '''
+ Response from a GOPRO_COMMAND set request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+
+ '''
+ return self.send(self.gopro_set_response_encode(cmd_id, status), force_mavlink1=force_mavlink1)
+
+ def rpm_encode(self, rpm1, rpm2):
+ '''
+ RPM sensor output
+
+ rpm1 : RPM Sensor1 (float)
+ rpm2 : RPM Sensor2 (float)
+
+ '''
+ return MAVLink_rpm_message(rpm1, rpm2)
+
+ def rpm_send(self, rpm1, rpm2, force_mavlink1=False):
+ '''
+ RPM sensor output
+
+ rpm1 : RPM Sensor1 (float)
+ rpm2 : RPM Sensor2 (float)
+
+ '''
+ return self.send(self.rpm_encode(rpm1, rpm2), force_mavlink1=force_mavlink1)
+
+ def heartbeat_encode(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return MAVLink_heartbeat_message(type, autopilot, base_mode, custom_mode, system_status, mavlink_version)
+
+ def heartbeat_send(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3, force_mavlink1=False):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return self.send(self.heartbeat_encode(type, autopilot, base_mode, custom_mode, system_status, mavlink_version), force_mavlink1=force_mavlink1)
+
+ def sys_status_encode(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return MAVLink_sys_status_message(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4)
+
+ def sys_status_send(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4, force_mavlink1=False):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return self.send(self.sys_status_encode(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4), force_mavlink1=force_mavlink1)
+
+ def system_time_encode(self, time_unix_usec, time_boot_ms):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return MAVLink_system_time_message(time_unix_usec, time_boot_ms)
+
+ def system_time_send(self, time_unix_usec, time_boot_ms, force_mavlink1=False):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return self.send(self.system_time_encode(time_unix_usec, time_boot_ms), force_mavlink1=force_mavlink1)
+
+ def ping_encode(self, time_usec, seq, target_system, target_component):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return MAVLink_ping_message(time_usec, seq, target_system, target_component)
+
+ def ping_send(self, time_usec, seq, target_system, target_component, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return self.send(self.ping_encode(time_usec, seq, target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_encode(self, target_system, control_request, version, passkey):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return MAVLink_change_operator_control_message(target_system, control_request, version, passkey)
+
+ def change_operator_control_send(self, target_system, control_request, version, passkey, force_mavlink1=False):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return self.send(self.change_operator_control_encode(target_system, control_request, version, passkey), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_ack_encode(self, gcs_system_id, control_request, ack):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return MAVLink_change_operator_control_ack_message(gcs_system_id, control_request, ack)
+
+ def change_operator_control_ack_send(self, gcs_system_id, control_request, ack, force_mavlink1=False):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return self.send(self.change_operator_control_ack_encode(gcs_system_id, control_request, ack), force_mavlink1=force_mavlink1)
+
+ def auth_key_encode(self, key):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return MAVLink_auth_key_message(key)
+
+ def auth_key_send(self, key, force_mavlink1=False):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return self.send(self.auth_key_encode(key), force_mavlink1=force_mavlink1)
+
+ def set_mode_encode(self, target_system, base_mode, custom_mode):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return MAVLink_set_mode_message(target_system, base_mode, custom_mode)
+
+ def set_mode_send(self, target_system, base_mode, custom_mode, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return self.send(self.set_mode_encode(target_system, base_mode, custom_mode), force_mavlink1=force_mavlink1)
+
+ def param_request_read_encode(self, target_system, target_component, param_id, param_index):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.xml
new file mode 100644
index 000000000..21f66ae50
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ardupilotmega.xml
@@ -0,0 +1,1545 @@
+
+
+ common.xml
+
+
+ uAvionix.xml
+
+ 2
+
+
+
+
+
+ Mission command to operate EPM gripper
+ gripper number (a number from 1 to max number of grippers on the vehicle)
+ gripper action (0=release, 1=grab. See GRIPPER_ACTIONS enum)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Enable/disable autotune
+ enable (1: enable, 0:disable)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to wait for an altitude or downwards vertical speed. This is meant for high altitude balloon launches, allowing the aircraft to be idle until either an altitude is reached or a negative vertical speed is reached (indicating early balloon burst). The wiggle time is how often to wiggle the control surfaces to prevent them seizing up.
+ altitude (m)
+ descent speed (m/s)
+ Wiggle Time (s)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ A system wide power-off event has been initiated.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ FLY button has been clicked.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ FLY button has been held for 1.5 seconds.
+ Takeoff altitude
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ PAUSE button has been clicked.
+ 1 if Solo is in a shot mode, 0 otherwise
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Automatically retry on failure (0=no retry, 1=retry).
+ Save without user input (0=require input, 1=autosave).
+ Delay (seconds)
+ Autoreboot (0=user reboot, 1=autoreboot)
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Cancel a running magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reply with the version banner
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Causes the gimbal to reset and boot as if it was just powered on
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Command autopilot to get into factory test/diagnostic mode
+ 0 means get out of test mode, 1 means get into test mode
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reports progress and success or failure of gimbal axis calibration procedure
+ Gimbal axis we're reporting calibration progress for
+ Current calibration progress for this axis, 0x64=100%
+ Status of the calibration
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Starts commutation calibration on the gimbal
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Erases gimbal application and parameters
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+ a limit has been breached
+
+
+
+ taking action eg. RTL
+
+
+
+ we're no longer in breach of a limit
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+
+
+ Flags in RALLY_POINT message
+
+ Flag set when requiring favorable winds for landing.
+
+
+
+ Flag set when plane is to immediately descend to break altitude and land without GCS intervention. Flag not set when plane is to loiter at Rally point until commanded to land.
+
+
+
+
+
+
+ Disable parachute release
+
+
+
+ Enable parachute release
+
+
+
+ Release parachute
+
+
+
+
+
+ Gripper actions.
+
+ gripper release of cargo
+
+
+
+ gripper grabs onto cargo
+
+
+
+
+
+
+ Camera heartbeat, announce camera component ID at 1hz
+
+
+
+ Camera image triggered
+
+
+
+ Camera connection lost
+
+
+
+ Camera unknown error
+
+
+
+ Camera battery low. Parameter p1 shows reported voltage
+
+
+
+ Camera storage low. Parameter p1 shows reported shots remaining
+
+
+
+ Camera storage low. Parameter p1 shows reported video minutes remaining
+
+
+
+
+
+
+ Shooting photos, not video
+
+
+
+ Shooting video, not stills
+
+
+
+ Unable to achieve requested exposure (e.g. shutter speed too low)
+
+
+
+ Closed loop feedback from camera, we know for sure it has successfully taken a picture
+
+
+
+ Open loop camera, an image trigger has been requested but we can't know for sure it has successfully taken a picture
+
+
+
+
+
+
+ Gimbal is powered on but has not started initializing yet
+
+
+
+ Gimbal is currently running calibration on the pitch axis
+
+
+
+ Gimbal is currently running calibration on the roll axis
+
+
+
+ Gimbal is currently running calibration on the yaw axis
+
+
+
+ Gimbal has finished calibrating and initializing, but is relaxed pending reception of first rate command from copter
+
+
+
+ Gimbal is actively stabilizing
+
+
+
+ Gimbal is relaxed because it missed more than 10 expected rate command messages in a row. Gimbal will move back to active mode when it receives a new rate command
+
+
+
+
+
+ Gimbal yaw axis
+
+
+
+ Gimbal pitch axis
+
+
+
+ Gimbal roll axis
+
+
+
+
+
+ Axis calibration is in progress
+
+
+
+ Axis calibration succeeded
+
+
+
+ Axis calibration failed
+
+
+
+
+
+ Whether or not this axis requires calibration is unknown at this time
+
+
+
+ This axis requires calibration
+
+
+
+ This axis does not require calibration
+
+
+
+
+
+
+ No GoPro connected
+
+
+
+ The detected GoPro is not HeroBus compatible
+
+
+
+ A HeroBus compatible GoPro is connected
+
+
+
+ An unrecoverable error was encountered with the connected GoPro, it may require a power cycle
+
+
+
+
+
+
+ GoPro is currently recording
+
+
+
+
+
+ The write message with ID indicated succeeded
+
+
+
+ The write message with ID indicated failed
+
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (___/Set)
+
+
+
+ (Get/___)
+
+
+
+ (Get/___)
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+
+
+ Video mode
+
+
+
+ Photo mode
+
+
+
+ Burst mode, hero 3+ only
+
+
+
+ Time lapse mode, hero 3+ only
+
+
+
+ Multi shot mode, hero 4 only
+
+
+
+ Playback mode, hero 4 only, silver only except when LCD or HDMI is connected to black
+
+
+
+ Playback mode, hero 4 only
+
+
+
+ Mode not yet known
+
+
+
+
+
+ 848 x 480 (480p)
+
+
+
+ 1280 x 720 (720p)
+
+
+
+ 1280 x 960 (960p)
+
+
+
+ 1920 x 1080 (1080p)
+
+
+
+ 1920 x 1440 (1440p)
+
+
+
+ 2704 x 1440 (2.7k-17:9)
+
+
+
+ 2704 x 1524 (2.7k-16:9)
+
+
+
+ 2704 x 2028 (2.7k-4:3)
+
+
+
+ 3840 x 2160 (4k-16:9)
+
+
+
+ 4096 x 2160 (4k-17:9)
+
+
+
+ 1280 x 720 (720p-SuperView)
+
+
+
+ 1920 x 1080 (1080p-SuperView)
+
+
+
+ 2704 x 1520 (2.7k-SuperView)
+
+
+
+ 3840 x 2160 (4k-SuperView)
+
+
+
+
+
+ 12 FPS
+
+
+
+ 15 FPS
+
+
+
+ 24 FPS
+
+
+
+ 25 FPS
+
+
+
+ 30 FPS
+
+
+
+ 48 FPS
+
+
+
+ 50 FPS
+
+
+
+ 60 FPS
+
+
+
+ 80 FPS
+
+
+
+ 90 FPS
+
+
+
+ 100 FPS
+
+
+
+ 120 FPS
+
+
+
+ 240 FPS
+
+
+
+ 12.5 FPS
+
+
+
+
+
+ 0x00: Wide
+
+
+
+ 0x01: Medium
+
+
+
+ 0x02: Narrow
+
+
+
+
+
+ 0=NTSC, 1=PAL
+
+
+
+
+
+ 5MP Medium
+
+
+
+ 7MP Medium
+
+
+
+ 7MP Wide
+
+
+
+ 10MP Wide
+
+
+
+ 12MP Wide
+
+
+
+
+
+ Auto
+
+
+
+ 3000K
+
+
+
+ 5500K
+
+
+
+ 6500K
+
+
+
+ Camera Raw
+
+
+
+
+
+ Auto
+
+
+
+ Neutral
+
+
+
+
+
+ ISO 400
+
+
+
+ ISO 800 (Only Hero 4)
+
+
+
+ ISO 1600
+
+
+
+ ISO 3200 (Only Hero 4)
+
+
+
+ ISO 6400
+
+
+
+
+
+ Low Sharpness
+
+
+
+ Medium Sharpness
+
+
+
+ High Sharpness
+
+
+
+
+
+ -5.0 EV (Hero 3+ Only)
+
+
+
+ -4.5 EV (Hero 3+ Only)
+
+
+
+ -4.0 EV (Hero 3+ Only)
+
+
+
+ -3.5 EV (Hero 3+ Only)
+
+
+
+ -3.0 EV (Hero 3+ Only)
+
+
+
+ -2.5 EV (Hero 3+ Only)
+
+
+
+ -2.0 EV
+
+
+
+ -1.5 EV
+
+
+
+ -1.0 EV
+
+
+
+ -0.5 EV
+
+
+
+ 0.0 EV
+
+
+
+ +0.5 EV
+
+
+
+ +1.0 EV
+
+
+
+ +1.5 EV
+
+
+
+ +2.0 EV
+
+
+
+ +2.5 EV (Hero 3+ Only)
+
+
+
+ +3.0 EV (Hero 3+ Only)
+
+
+
+ +3.5 EV (Hero 3+ Only)
+
+
+
+ +4.0 EV (Hero 3+ Only)
+
+
+
+ +4.5 EV (Hero 3+ Only)
+
+
+
+ +5.0 EV (Hero 3+ Only)
+
+
+
+
+
+ Charging disabled
+
+
+
+ Charging enabled
+
+
+
+
+
+ Unknown gopro model
+
+
+
+ Hero 3+ Silver (HeroBus not supported by GoPro)
+
+
+
+ Hero 3+ Black
+
+
+
+ Hero 4 Silver
+
+
+
+ Hero 4 Black
+
+
+
+
+
+ 3 Shots / 1 Second
+
+
+
+ 5 Shots / 1 Second
+
+
+
+ 10 Shots / 1 Second
+
+
+
+ 10 Shots / 2 Second
+
+
+
+ 10 Shots / 3 Second (Hero 4 Only)
+
+
+
+ 30 Shots / 1 Second
+
+
+
+ 30 Shots / 2 Second
+
+
+
+ 30 Shots / 3 Second
+
+
+
+ 30 Shots / 6 Second
+
+
+
+
+
+
+ LED patterns off (return control to regular vehicle control)
+
+
+
+ LEDs show pattern during firmware update
+
+
+
+ Custom Pattern using custom bytes fields
+
+
+
+
+
+ Flags in EKF_STATUS message
+
+ set if EKF's attitude estimate is good
+
+
+
+ set if EKF's horizontal velocity estimate is good
+
+
+
+ set if EKF's vertical velocity estimate is good
+
+
+
+ set if EKF's horizontal position (relative) estimate is good
+
+
+
+ set if EKF's horizontal position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (above ground) estimate is good
+
+
+
+ EKF is in constant position mode and does not know it's absolute or relative position
+
+
+
+ set if EKF's predicted horizontal position (relative) estimate is good
+
+
+
+ set if EKF's predicted horizontal position (absolute) estimate is good
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Special ACK block numbers control activation of dataflash log streaming
+
+
+
+ UAV to stop sending DataFlash blocks
+
+
+
+
+ UAV to start sending DataFlash blocks
+
+
+
+
+
+
+ Possible remote log data block statuses
+
+ This block has NOT been received
+
+
+
+ This block has been received
+
+
+
+
+
+
+ Offsets and calibrations values for hardware sensors. This makes it easier to debug the calibration process.
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+ magnetic declination (radians)
+ raw pressure from barometer
+ raw temperature from barometer
+ gyro X calibration
+ gyro Y calibration
+ gyro Z calibration
+ accel X calibration
+ accel Y calibration
+ accel Z calibration
+
+
+
+ Deprecated. Use MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS instead. Set the magnetometer offsets
+ System ID
+ Component ID
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+
+
+
+ state of APM memory
+ heap top
+ free memory
+
+ free memory (32 bit)
+
+
+
+ raw ADC output
+ ADC output 1
+ ADC output 2
+ ADC output 3
+ ADC output 4
+ ADC output 5
+ ADC output 6
+
+
+
+
+ Configure on-board Camera Control System.
+ System ID
+ Component ID
+ Mode enumeration from 1 to N //P, TV, AV, M, Etc (0 means ignore)
+ Divisor number //e.g. 1000 means 1/1000 (0 means ignore)
+ F stop number x 10 //e.g. 28 means 2.8 (0 means ignore)
+ ISO enumeration from 1 to N //e.g. 80, 100, 200, Etc (0 means ignore)
+ Exposure type enumeration from 1 to N (0 means ignore)
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+ Control on-board Camera Control System to take shots.
+ System ID
+ Component ID
+ 0: stop, 1: start or keep it up //Session control e.g. show/hide lens
+ 1 to N //Zoom's absolute position (0 means ignore)
+ -100 to 100 //Zooming step value to offset zoom from the current position
+ 0: unlock focus or keep unlocked, 1: lock focus or keep locked, 3: re-lock focus
+ 0: ignore, 1: shot or start filming
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+
+ Message to configure a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ mount operating mode (see MAV_MOUNT_MODE enum)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+
+
+
+ Message to control a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ pitch(deg*100) or lat, depending on mount mode
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+ if "1" it will save current trimmed position on EEPROM (just valid for NEUTRAL and LANDING)
+
+
+
+ Message with some status from APM to GCS about camera or antenna mount
+ System ID
+ Component ID
+ pitch(deg*100)
+ roll(deg*100)
+ yaw(deg*100)
+
+
+
+
+ A fence point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+ total number of points (for sanity checking)
+ Latitude of point
+ Longitude of point
+
+
+
+ Request a current fence point from MAV
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+
+
+
+ Status of geo-fencing. Sent in extended status stream when fencing enabled
+ 0 if currently inside fence, 1 if outside
+ number of fence breaches
+ last breach type (see FENCE_BREACH_* enum)
+ time of last breach in milliseconds since boot
+
+
+
+ Status of DCM attitude estimator
+ X gyro drift estimate rad/s
+ Y gyro drift estimate rad/s
+ Z gyro drift estimate rad/s
+ average accel_weight
+ average renormalisation value
+ average error_roll_pitch value
+ average error_yaw value
+
+
+
+ Status of simulation environment, if used
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+ Status of key hardware
+ board voltage (mV)
+ I2C error count
+
+
+
+ Status generated by radio
+ local signal strength
+ remote signal strength
+ how full the tx buffer is as a percentage
+ background noise level
+ remote background noise level
+ receive errors
+ count of error corrected packets
+
+
+
+
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is enabled
+ state of AP_Limits, (see enum LimitState, LIMITS_STATE)
+ time of last breach in milliseconds since boot
+ time of last recovery action in milliseconds since boot
+ time of last successful recovery in milliseconds since boot
+ time of last all-clear in milliseconds since boot
+ number of fence breaches
+ AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE)
+
+
+
+ Wind estimation
+ wind direction that wind is coming from (degrees)
+ wind speed in ground plane (m/s)
+ vertical wind speed (m/s)
+
+
+
+ Data packet, size 16
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 32
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 64
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 96
+ data type
+ data length
+ raw data
+
+
+
+ Rangefinder reporting
+ distance in meters
+ raw voltage if available, zero otherwise
+
+
+
+ Airspeed auto-calibration
+ GPS velocity north m/s
+ GPS velocity east m/s
+ GPS velocity down m/s
+ Differential pressure pascals
+ Estimated to true airspeed ratio
+ Airspeed ratio
+ EKF state x
+ EKF state y
+ EKF state z
+ EKF Pax
+ EKF Pby
+ EKF Pcz
+
+
+
+
+ A rally point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 0)
+ total number of points (for sanity checking)
+ Latitude of point in degrees * 1E7
+ Longitude of point in degrees * 1E7
+ Transit / loiter altitude in meters relative to home
+
+ Break altitude in meters relative to home
+ Heading to aim for when landing. In centi-degrees.
+ See RALLY_FLAGS enum for definition of the bitmask.
+
+
+
+ Request a current rally point from MAV. MAV should respond with a RALLY_POINT message. MAV should not respond if the request is invalid.
+ System ID
+ Component ID
+ point index (first point is 0)
+
+
+
+ Status of compassmot calibration
+ throttle (percent*10)
+ current (amps)
+ interference (percent)
+ Motor Compensation X
+ Motor Compensation Y
+ Motor Compensation Z
+
+
+
+
+ Status of secondary AHRS filter if available
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+
+ Camera Event
+ Image timestamp (microseconds since UNIX epoch, according to camera clock)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ See CAMERA_STATUS_TYPES enum for definition of the bitmask
+ Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+
+
+
+
+ Camera Capture Feedback
+ Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ Latitude in (deg * 1E7)
+ Longitude in (deg * 1E7)
+ Altitude Absolute (meters AMSL)
+ Altitude Relative (meters above HOME location)
+ Camera Roll angle (earth frame, degrees, +-180)
+
+ Camera Pitch angle (earth frame, degrees, +-180)
+
+ Camera Yaw (earth frame, degrees, 0-360, true)
+
+ Focal Length (mm)
+
+ See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask
+
+
+
+
+ 2nd Battery status
+ voltage in millivolts
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+
+
+
+ Status of third AHRS filter if available. This is for ANU research group (Ali and Sean)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+ test variable1
+ test variable2
+ test variable3
+ test variable4
+
+
+
+ Request the autopilot version from the system/component.
+ System ID
+ Component ID
+
+
+
+
+ Send a block of log data to remote location
+ System ID
+ Component ID
+ log data block sequence number
+ log data block
+
+
+
+ Send Status of each log block that autopilot board might have sent
+ System ID
+ Component ID
+ log data block sequence number
+ log data block status
+
+
+
+ Control vehicle LEDs
+ System ID
+ Component ID
+ Instance (LED instance to control or 255 for all LEDs)
+ Pattern (see LED_PATTERN_ENUM)
+ Custom Byte Length
+ Custom Bytes
+
+
+
+ Reports progress of compass calibration.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ Attempt number
+ Completion percentage
+ Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid)
+ Body frame direction vector for display
+ Body frame direction vector for display
+ Body frame direction vector for display
+
+
+
+ Reports results of completed compass calibration. Sent until MAG_CAL_ACK received.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters
+ RMS milligauss residuals
+ X offset
+ Y offset
+ Z offset
+ X diagonal (matrix 11)
+ Y diagonal (matrix 22)
+ Z diagonal (matrix 33)
+ X off-diagonal (matrix 12 and 21)
+ Y off-diagonal (matrix 13 and 31)
+ Z off-diagonal (matrix 32 and 23)
+
+
+
+
+ EKF Status message including flags and variances
+ Flags
+
+ Velocity variance
+
+ Horizontal Position variance
+ Vertical Position variance
+ Compass variance
+ Terrain Altitude variance
+
+
+
+
+ PID tuning information
+ axis
+ desired rate (degrees/s)
+ achieved rate (degrees/s)
+ FF component
+ P component
+ I component
+ D component
+
+
+
+ 3 axis gimbal mesuraments
+ System ID
+ Component ID
+ Time since last update (seconds)
+ Delta angle X (radians)
+ Delta angle Y (radians)
+ Delta angle X (radians)
+ Delta velocity X (m/s)
+ Delta velocity Y (m/s)
+ Delta velocity Z (m/s)
+ Joint ROLL (radians)
+ Joint EL (radians)
+ Joint AZ (radians)
+
+
+
+ Control message for rate gimbal
+ System ID
+ Component ID
+ Demanded angular rate X (rad/s)
+ Demanded angular rate Y (rad/s)
+ Demanded angular rate Z (rad/s)
+
+
+
+ 100 Hz gimbal torque command telemetry
+ System ID
+ Component ID
+ Roll Torque Command
+ Elevation Torque Command
+ Azimuth Torque Command
+
+
+
+
+ Heartbeat from a HeroBus attached GoPro
+ Status
+ Current capture mode
+ additional status bits
+
+
+
+
+ Request a GOPRO_COMMAND response from the GoPro
+ System ID
+ Component ID
+ Command ID
+
+
+
+ Response from a GOPRO_COMMAND get request
+ Command ID
+ Status
+ Value
+
+
+
+ Request to set a GOPRO_COMMAND with a desired
+ System ID
+ Component ID
+ Command ID
+ Value
+
+
+
+ Response from a GOPRO_COMMAND set request
+ Command ID
+ Status
+
+
+
+
+ RPM sensor output
+ RPM Sensor1
+ RPM Sensor2
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.py
new file mode 100644
index 000000000..2226ac11a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.py
@@ -0,0 +1,12126 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: autoquad.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'autoquad'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_PROPULSION = 13 # Motor/ESC telemetry data.
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_PROPULSION', '''Motor/ESC telemetry data.''')
+MAV_DATA_STREAM_ENUM_END = 14 #
+enums['MAV_DATA_STREAM'][14] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_AQ_TELEMETRY_F = 150
+MAVLINK_MSG_ID_AQ_ESC_TELEMETRY = 152
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_aq_telemetry_f_message(MAVLink_message):
+ '''
+ Sends up to 20 raw float values.
+ '''
+ id = MAVLINK_MSG_ID_AQ_TELEMETRY_F
+ name = 'AQ_TELEMETRY_F'
+ fieldnames = ['Index', 'value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7', 'value8', 'value9', 'value10', 'value11', 'value12', 'value13', 'value14', 'value15', 'value16', 'value17', 'value18', 'value19', 'value20']
+ ordered_fieldnames = [ 'value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7', 'value8', 'value9', 'value10', 'value11', 'value12', 'value13', 'value14', 'value15', 'value16', 'value17', 'value18', 'value19', 'value20', 'Index' ]
+ format = ' 4 motors.
+ Data is described as follows:
+ // unsigned int state : 3; //
+ unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error count
+ // - Data Version 3 - //
+ unsigned int temp : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+ '''
+ id = MAVLINK_MSG_ID_AQ_ESC_TELEMETRY
+ name = 'AQ_ESC_TELEMETRY'
+ fieldnames = ['time_boot_ms', 'seq', 'num_motors', 'num_in_seq', 'escid', 'status_age', 'data_version', 'data0', 'data1']
+ ordered_fieldnames = [ 'time_boot_ms', 'data0', 'data1', 'status_age', 'seq', 'num_motors', 'num_in_seq', 'escid', 'data_version' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack(' 4 motors. Data
+ is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error
+ count // - Data Version 3
+ - // unsigned int temp
+ : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ time_boot_ms : Timestamp of the component clock since boot time in ms. (uint32_t)
+ seq : Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc). (uint8_t)
+ num_motors : Total number of active ESCs/motors on the system. (uint8_t)
+ num_in_seq : Number of active ESCs in this sequence (1 through this many array members will be populated with data) (uint8_t)
+ escid : ESC/Motor ID (uint8_t)
+ status_age : Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data. (uint16_t)
+ data_version : Version of data structure (determines contents). (uint8_t)
+ data0 : Data bits 1-32 for each ESC. (uint32_t)
+ data1 : Data bits 33-64 for each ESC. (uint32_t)
+
+ '''
+ return MAVLink_aq_esc_telemetry_message(time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1)
+
+ def aq_esc_telemetry_send(self, time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1, force_mavlink1=False):
+ '''
+ Sends ESC32 telemetry data for up to 4 motors. Multiple messages may
+ be sent in sequence when system has > 4 motors. Data
+ is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error
+ count // - Data Version 3
+ - // unsigned int temp
+ : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ time_boot_ms : Timestamp of the component clock since boot time in ms. (uint32_t)
+ seq : Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc). (uint8_t)
+ num_motors : Total number of active ESCs/motors on the system. (uint8_t)
+ num_in_seq : Number of active ESCs in this sequence (1 through this many array members will be populated with data) (uint8_t)
+ escid : ESC/Motor ID (uint8_t)
+ status_age : Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data. (uint16_t)
+ data_version : Version of data structure (determines contents). (uint8_t)
+ data0 : Data bits 1-32 for each ESC. (uint32_t)
+ data1 : Data bits 33-64 for each ESC. (uint32_t)
+
+ '''
+ return self.send(self.aq_esc_telemetry_encode(time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1), force_mavlink1=force_mavlink1)
+
+ def heartbeat_encode(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return MAVLink_heartbeat_message(type, autopilot, base_mode, custom_mode, system_status, mavlink_version)
+
+ def heartbeat_send(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3, force_mavlink1=False):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return self.send(self.heartbeat_encode(type, autopilot, base_mode, custom_mode, system_status, mavlink_version), force_mavlink1=force_mavlink1)
+
+ def sys_status_encode(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return MAVLink_sys_status_message(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4)
+
+ def sys_status_send(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4, force_mavlink1=False):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return self.send(self.sys_status_encode(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4), force_mavlink1=force_mavlink1)
+
+ def system_time_encode(self, time_unix_usec, time_boot_ms):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return MAVLink_system_time_message(time_unix_usec, time_boot_ms)
+
+ def system_time_send(self, time_unix_usec, time_boot_ms, force_mavlink1=False):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return self.send(self.system_time_encode(time_unix_usec, time_boot_ms), force_mavlink1=force_mavlink1)
+
+ def ping_encode(self, time_usec, seq, target_system, target_component):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return MAVLink_ping_message(time_usec, seq, target_system, target_component)
+
+ def ping_send(self, time_usec, seq, target_system, target_component, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return self.send(self.ping_encode(time_usec, seq, target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_encode(self, target_system, control_request, version, passkey):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return MAVLink_change_operator_control_message(target_system, control_request, version, passkey)
+
+ def change_operator_control_send(self, target_system, control_request, version, passkey, force_mavlink1=False):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return self.send(self.change_operator_control_encode(target_system, control_request, version, passkey), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_ack_encode(self, gcs_system_id, control_request, ack):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return MAVLink_change_operator_control_ack_message(gcs_system_id, control_request, ack)
+
+ def change_operator_control_ack_send(self, gcs_system_id, control_request, ack, force_mavlink1=False):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return self.send(self.change_operator_control_ack_encode(gcs_system_id, control_request, ack), force_mavlink1=force_mavlink1)
+
+ def auth_key_encode(self, key):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return MAVLink_auth_key_message(key)
+
+ def auth_key_send(self, key, force_mavlink1=False):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return self.send(self.auth_key_encode(key), force_mavlink1=force_mavlink1)
+
+ def set_mode_encode(self, target_system, base_mode, custom_mode):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return MAVLink_set_mode_message(target_system, base_mode, custom_mode)
+
+ def set_mode_send(self, target_system, base_mode, custom_mode, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return self.send(self.set_mode_encode(target_system, base_mode, custom_mode), force_mavlink1=force_mavlink1)
+
+ def param_request_read_encode(self, target_system, target_component, param_id, param_index):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.xml
new file mode 100644
index 000000000..8c224783b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/autoquad.xml
@@ -0,0 +1,169 @@
+
+
+ common.xml
+ 3
+
+
+ Track current version of these definitions (can be used by checking value of AUTOQUAD_MAVLINK_DEFS_VERSION_ENUM_END). Append a new entry for each published change.
+
+
+
+ Available operating modes/statuses for AutoQuad flight controller.
+ Bitmask up to 32 bits. Low side bits for base modes, high side for
+ additional active features/modifiers/constraints.
+
+ System is initializing
+
+
+
+ System is *armed* and standing by, with no throttle input and no autonomous mode
+
+
+ Flying (throttle input detected), assumed under manual control unless other mode bits are set
+
+
+ Altitude hold engaged
+
+
+ Position hold engaged
+
+
+ Externally-guided (eg. GCS) navigation mode
+
+
+ Autonomous mission execution mode
+
+
+
+ Ready but *not armed*
+
+
+ Calibration mode active
+
+
+
+ No valid control input (eg. no radio link)
+
+
+ Battery is low (stage 1 warning)
+
+
+ Battery is depleted (stage 2 warning)
+
+
+
+ Dynamic Velocity Hold is active (PH with proportional manual direction override)
+
+
+ ynamic Altitude Override is active (AH with proportional manual adjustment)
+
+
+
+ Craft is at ceiling altitude
+
+
+ Ceiling altitude is set
+
+
+ Heading-Free dynamic mode active
+
+
+ Heading-Free locked mode active
+
+
+ Automatic Return to Home is active
+
+
+ System is in failsafe recovery mode
+
+
+
+
+ Orbit a waypoint.
+ Orbit radius in meters
+ Loiter time in decimal seconds
+ Maximum horizontal speed in m/s
+ Desired yaw angle at waypoint
+ Latitude
+ Longitude
+ Altitude
+
+
+ Start/stop AutoQuad telemetry values stream.
+ Start or stop (1 or 0)
+ Stream frequency in us
+ Dataset ID (refer to aq_mavlink.h::mavlinkCustomDataSets enum in AQ flight controller code)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Request AutoQuad firmware version number.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Motor/ESC telemetry data.
+
+
+
+
+
+ Sends up to 20 raw float values.
+ Index of message
+ value1
+ value2
+ value3
+ value4
+ value5
+ value6
+ value7
+ value8
+ value9
+ value10
+ value11
+ value12
+ value13
+ value14
+ value15
+ value16
+ value17
+ value18
+ value19
+ value20
+
+
+ Sends ESC32 telemetry data for up to 4 motors. Multiple messages may be sent in sequence when system has > 4 motors. Data is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 -
+ // unsigned int errors : 9; // Bad detects error count
+ // - Data Version 3 -
+ // unsigned int temp : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ Timestamp of the component clock since boot time in ms.
+ Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc).
+ Total number of active ESCs/motors on the system.
+ Number of active ESCs in this sequence (1 through this many array members will be populated with data)
+ ESC/Motor ID
+ Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data.
+ Version of data structure (determines contents).
+ Data bits 1-32 for each ESC.
+ Data bits 33-64 for each ESC.
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.py
new file mode 100644
index 000000000..68d0b9119
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.py
@@ -0,0 +1,11833 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'common'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_heartbeat_message(MAVLink_message):
+ '''
+ The heartbeat message shows that a system is present and
+ responding. The type of the MAV and Autopilot hardware allow
+ the receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user interface
+ based on the autopilot).
+ '''
+ id = MAVLINK_MSG_ID_HEARTBEAT
+ name = 'HEARTBEAT'
+ fieldnames = ['type', 'autopilot', 'base_mode', 'custom_mode', 'system_status', 'mavlink_version']
+ ordered_fieldnames = [ 'custom_mode', 'type', 'autopilot', 'base_mode', 'system_status', 'mavlink_version' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.xml
new file mode 100644
index 000000000..8718cd7da
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/common.xml
@@ -0,0 +1,3716 @@
+
+
+ 3
+ 0
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ Reserved for future use.
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+ PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+
+
+ SMACCMPilot - http://smaccmpilot.org
+
+
+ AutoQuad -- http://autoquad.org
+
+
+ Armazila -- http://armazila.com
+
+
+ Aerob -- http://aerob.ru
+
+
+ ASLUAV autopilot -- http://www.asl.ethz.ch
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Tricopter
+
+
+ Flapping wing
+
+
+ Kite
+
+
+ Onboard companion controller
+
+
+ Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.
+
+
+ Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.
+
+
+ Tiltrotor VTOL
+
+
+
+ VTOL reserved 2
+
+
+ VTOL reserved 3
+
+
+ VTOL reserved 4
+
+
+ VTOL reserved 5
+
+
+ Onboard gimbal
+
+
+ Onboard ADSB peripheral
+
+
+
+ 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.
+
+ development release
+
+
+ alpha release
+
+
+ beta release
+
+
+ release candidate
+
+
+ official stable release
+
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+ Override command, pauses current mission execution and moves immediately to a position
+
+ Hold at the current position.
+
+
+ Continue with the next item in mission execution.
+
+
+ Hold at the current position of the system
+
+
+ Hold at the position specified in the parameters of the DO_HOLD action
+
+
+
+ These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but it
+ simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.
+
+ System is not ready to fly, booting, calibrating, etc. No flag is set.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ On Screen Display (OSD) devices for video links
+
+
+ Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol
+
+
+
+
+
+
+ These encode the sensors whose status is sent as part of the SYS_STATUS message.
+
+ 0x01 3D gyro
+
+
+ 0x02 3D accelerometer
+
+
+ 0x04 3D magnetometer
+
+
+ 0x08 absolute pressure
+
+
+ 0x10 differential pressure
+
+
+ 0x20 GPS
+
+
+ 0x40 optical flow
+
+
+ 0x80 computer vision position
+
+
+ 0x100 laser based position
+
+
+ 0x200 external ground truth (Vicon or Leica)
+
+
+ 0x400 3D angular rate control
+
+
+ 0x800 attitude stabilization
+
+
+ 0x1000 yaw position
+
+
+ 0x2000 z/altitude control
+
+
+ 0x4000 x/y position control
+
+
+ 0x8000 motor outputs / control
+
+
+ 0x10000 rc receiver
+
+
+ 0x20000 2nd 3D gyro
+
+
+ 0x40000 2nd 3D accelerometer
+
+
+ 0x80000 2nd 3D magnetometer
+
+
+ 0x100000 geofence
+
+
+ 0x200000 AHRS subsystem health
+
+
+ 0x400000 Terrain subsystem health
+
+
+ 0x800000 Motors are reversed
+
+
+ 0x1000000 Logging
+
+
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Local coordinate frame, Z-up (x: north, y: east, z: down).
+
+
+ NOT a coordinate frame, indicates a mission command.
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Local coordinate frame, Z-down (x: east, y: north, z: up)
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.
+
+
+ Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.
+
+
+ Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable fenced mode
+
+
+ Switched to guided mode to return point (fence point 0)
+
+
+ Report fence breach, but don't take action
+
+
+ Switched to guided mode to return point (fence point 0) with manual throttle control
+
+
+ Switch to RTL (return to launch) mode and head for the return point.
+
+
+
+
+
+ No last fence breach
+
+
+ Breached minimum altitude
+
+
+ Breached maximum altitude
+
+
+ Breached fence boundary
+
+
+
+
+ Enumeration of possible mount operation modes
+ Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization
+ Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+ Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start RC Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start to point to Lat,Lon,Alt
+
+
+ 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.
+
+ Navigate to MISSION.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Acceptance radius in meters (if the sphere with this radius is hit, the MISSION counts as reached)
+ 0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.
+ Desired yaw angle at MISSION (rotary wing)
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION an unlimited amount of time
+ Empty
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X turns
+ Turns
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X seconds
+ Seconds (decimal)
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Return to launch location
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Land at location
+ Abort Alt
+ Empty
+ Empty
+ Desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Takeoff from ground / hand
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor
+ Empty
+ Empty
+ Yaw angle (if magnetometer present), ignored without magnetometer
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land at local position (local frame only)
+ Landing target number (if available)
+ Maximum accepted offset from desired landing position [m] - 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
+ Landing descend rate [ms^-1]
+ Desired yaw angle [rad]
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis / ground level position [m]
+
+
+ Takeoff from local position (local frame only)
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]
+ Empty
+ Takeoff ascend rate [ms^-1]
+ Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis position [m]
+
+
+ Vehicle following, i.e. this waypoint represents the position of a moving vehicle
+ Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation
+ Ground speed of vehicle to be followed
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ 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.
+ 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Desired altitude in meters
+
+
+ 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.
+ Heading Required (0 = False)
+ Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.
+ Empty
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location
+ Latitude
+ Longitude
+ Altitude
+
+
+ Being following a target
+ System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode
+ RESERVED
+ RESERVED
+ altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home
+ altitude
+ RESERVED
+ TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout
+
+
+ Reposition the MAV after a follow target command has been sent
+ Camera q1 (where 0 is on the ray from the camera to the tracking device)
+ Camera q2
+ Camera q3
+ Camera q4
+ altitude offset from target (m)
+ X offset from target (m)
+ Y offset from target (m)
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+ Control autonomous path planning on the MAV.
+ 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning
+ 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
+ Empty
+ Yaw angle at goal, in compass degrees, [0..360]
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Navigate to MISSION using a spline path.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Empty
+ Empty
+ Empty
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Takeoff from ground using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+
+
+
+ hand control over to an external controller
+ On / Off (> 0.5f on)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay the next navigation command a number of seconds or until a specified time
+ Delay in seconds (decimal, -1 to enable time-of-day fields)
+ hour (24h format, UTC, -1 to ignore)
+ minute (24h format, UTC, -1 to ignore)
+ second (24h format, UTC)
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay mission state machine.
+ Delay in seconds (decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Ascend/descend at rate. Delay mission state machine until desired altitude reached.
+ Descent / Ascend rate (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Finish Altitude
+
+
+ Delay mission state machine until within desired distance of next NAV point.
+ Distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Reach a certain target angle.
+ target angle: [0-360], 0 is north
+ speed during yaw change:[deg per second]
+ direction: negative: counter clockwise, positive: clockwise [-1,1]
+ relative offset or absolute angle: [ 1,0]
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set system mode.
+ Mode, as defined by ENUM MAV_MODE
+ Custom mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Jump to the desired command in the mission list. Repeat this action only the specified number of times
+ Sequence number
+ Repeat count
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change speed and/or throttle set points.
+ Speed type (0=Airspeed, 1=Ground Speed)
+ Speed (m/s, -1 indicates no change)
+ Throttle ( Percent, -1 indicates no change)
+ absolute or relative [0,1]
+ Empty
+ Empty
+ Empty
+
+
+ Changes the home location either to the current location or a specified location.
+ Use current (1=use current location, 0=use specified location)
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Altitude
+
+
+ Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.
+ Parameter number
+ Parameter value
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a relay to a condition.
+ Relay number
+ Setting (1=on, 0=off, others possible depending on system hardware)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a relay on and off for a desired number of cyles with a desired period.
+ Relay number
+ Cycle count
+ Cycle time (seconds, decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a servo to a desired PWM value.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Cycle count
+ Cycle time (seconds)
+ Empty
+ Empty
+ Empty
+
+
+ Terminate flight immediately
+ Flight termination activated if > 0.5
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change altitude set point.
+ Altitude in meters
+ Mav frame of new altitude (see MAV_FRAME)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.
+ Empty
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Empty
+
+
+ Mission command to perform a landing from a rally point.
+ Break altitude (meters)
+ Landing speed (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to safely abort an autonmous landing.
+ Altitude (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reposition the vehicle to a specific WGS84 global position.
+ Ground speed, less than 0 (-1) for default
+ Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.
+ Reserved
+ Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)
+ Latitude (deg * 1E7)
+ Longitude (deg * 1E7)
+ Altitude (meters)
+
+
+ If in a GPS controlled position mode, hold the current position or continue.
+ 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.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Set moving direction to forward or reverse.
+ Direction (0=Forward, 1=Reverse)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Control onboard camera system.
+ Camera ID (-1 for all)
+ Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Transmission mode: 0: video stream, >0: single images every n seconds (decimal)
+ Recording: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Empty
+ Empty
+ Empty
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+
+
+ Mission command to configure an on-board camera controller system.
+ Modes: P, TV, AV, M, Etc
+ Shutter speed: Divisor number for one second
+ Aperture: F stop number
+ ISO number e.g. 80, 100, 200, Etc
+ Exposure type enumerator
+ Command Identity
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+
+
+
+ Mission command to control an on-board camera controller system.
+ Session control e.g. show/hide lens
+ Zoom's absolute position
+ Zooming step value to offset zoom from the current position
+ Focus Locking, Unlocking or Re-locking
+ Shooting Command
+ Command Identity
+ Empty
+
+
+
+
+ Mission command to configure a camera or antenna mount
+ Mount operation mode (see MAV_MOUNT_MODE enum)
+ stabilize roll? (1 = yes, 0 = no)
+ stabilize pitch? (1 = yes, 0 = no)
+ stabilize yaw? (1 = yes, 0 = no)
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to control a camera or antenna mount
+ pitch or lat in degrees, depending on mount mode.
+ roll or lon in degrees depending on mount mode
+ yaw or alt (in meters) depending on mount mode
+ reserved
+ reserved
+ reserved
+ MAV_MOUNT_MODE enum value
+
+
+
+ Mission command to set CAM_TRIGG_DIST for this flight
+ Camera trigger distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to enable the geofence
+ enable? (0=disable, 1=enable, 2=disable_floor_only)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to trigger a parachute
+ action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to perform motor test
+ motor sequence number (a number from 1 to max number of motors on the vehicle)
+ throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)
+ throttle
+ timeout (in seconds)
+ Empty
+ Empty
+ Empty
+
+
+
+ Change to/from inverted flight
+ inverted (0=normal, 1=inverted)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Sets a desired vehicle turn angle and thrust change
+ yaw angle to adjust steering by in centidegress
+ Thrust - normalized to -2 .. 2
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ Mission command to control a camera or antenna mount, using a quaternion as reference.
+ q1 - quaternion param #1, w (1 in null-rotation)
+ q2 - quaternion param #2, x (0 in null-rotation)
+ q3 - quaternion param #3, y (0 in null-rotation)
+ q4 - quaternion param #4, z (0 in null-rotation)
+ Empty
+ Empty
+ Empty
+
+
+
+ set id of master controller
+ System ID
+ Component ID
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ set limits for external control
+ timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout
+ absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit
+ absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit
+ horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit
+ Empty
+ Empty
+ Empty
+
+
+
+ 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
+ 0: Stop engine, 1:Start Engine
+ 0: Warm start, 1:Cold start. Controls use of choke where applicable
+ Height delay (meters). 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ NOP - This command is only used to mark the upper limit of the DO commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Trigger calibration. This command will be only accepted if in pre-flight mode.
+ Gyro calibration: 0: no, 1: yes
+ Magnetometer calibration: 0: no, 1: yes
+ Ground pressure: 0: no, 1: yes
+ Radio calibration: 0: no, 1: yes
+ Accelerometer calibration: 0: no, 1: yes
+ Compass/Motor interference calibration: 0: no, 1: yes
+ Empty
+
+
+ Set sensor offsets. This command will be only accepted if in pre-flight mode.
+ Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer
+ X axis offset (or generic dimension 1), in the sensor's raw units
+ Y axis offset (or generic dimension 2), in the sensor's raw units
+ Z axis offset (or generic dimension 3), in the sensor's raw units
+ Generic dimension 4, in the sensor's raw units
+ Generic dimension 5, in the sensor's raw units
+ Generic dimension 6, in the sensor's raw units
+
+
+ Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.
+ 1: Trigger actuator ID assignment and direction mapping.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)
+ Reserved
+ Empty
+ Empty
+ Empty
+
+
+ Request the reboot or shutdown of system components.
+ 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.
+ 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.
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+
+
+ Hold / continue the current action
+ MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan
+ MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position
+ MAV_FRAME coordinate frame of hold point
+ Desired yaw angle in degrees
+ Latitude / X position
+ Longitude / Y position
+ Altitude / Z position
+
+
+ start running a mission
+ first_item: the first mission item to run
+ last_item: the last mission item to run (after this item is run, the mission ends)
+
+
+ Arms / Disarms a component
+ 1 to arm, 0 to disarm
+
+
+ Request the home position from the vehicle.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Starts receiver pairing
+ 0:Spektrum
+ 0:Spektrum DSM2, 1:Spektrum DSMX
+
+
+ Request the interval between messages for a particular MAVLink message ID
+ The MAVLink message ID
+
+
+ Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM
+ The MAVLink message ID
+ The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.
+
+
+ Request autopilot capabilities
+ 1: Request autopilot version
+ Reserved (all remaining params)
+
+
+ Start image capture sequence
+ Duration between two consecutive pictures (in seconds)
+ Number of images to capture total - 0 for unlimited capture
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop image capture sequence
+ Reserved
+ Reserved
+
+
+
+ Enable or disable on-board camera triggering system.
+ Trigger enable/disable (0 for disable, 1 for start)
+ Shutter integration time (in ms)
+ Reserved
+
+
+
+ Starts video capture
+ Camera ID (0 for all cameras), 1 for first, 2 for second, etc.
+ Frames per second
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop the current video capture
+ Reserved
+ Reserved
+
+
+
+ Create a panorama at the current position
+ Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)
+ Viewing angle vertical of panorama (in degrees)
+ Speed of the horizontal rotation (in degrees per second)
+ Speed of the vertical rotation (in degrees per second)
+
+
+
+ Request VTOL transition
+ The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.
+
+
+
+ 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 velocites along all three axes.
+
+
+
+
+ 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.
+
+ Radius of desired circle in CIRCLE_MODE
+ User defined
+ User defined
+ User defined
+ Unscaled target latitude of center of circle in CIRCLE_MODE
+ Unscaled target longitude of center of circle in CIRCLE_MODE
+
+
+
+
+
+
+ Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.
+ 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.
+ Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.
+ Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.
+ Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.
+ Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Altitude, in meters AMSL
+
+
+ Control the payload deployment.
+ Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+
+
+ THIS INTERFACE IS DEPRECATED AS OF JULY 2015. Please use MESSAGE_INTERVAL instead. 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.
+
+ Enable all data streams
+
+
+ Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+
+
+ Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+
+
+ Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+
+
+ Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.
+
+
+ Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+
+ 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).
+
+ No region of interest.
+
+
+ Point toward next MISSION.
+
+
+ Point toward given MISSION.
+
+
+ Point toward fixed location.
+
+
+ Point toward of given id.
+
+
+
+ ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.
+
+ Command / mission item is ok.
+
+
+ Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.
+
+
+ The system is refusing to accept this command from this source / communication partner.
+
+
+ Command or mission item is not supported, other commands would be accepted.
+
+
+ The coordinate frame of this command / mission item is not supported.
+
+
+ The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.
+
+
+ The X or latitude value is out of range.
+
+
+ The Y or longitude value is out of range.
+
+
+ The Z or altitude value is out of range.
+
+
+
+ Specifies the datatype of a MAVLink parameter.
+
+ 8-bit unsigned integer
+
+
+ 8-bit signed integer
+
+
+ 16-bit unsigned integer
+
+
+ 16-bit signed integer
+
+
+ 32-bit unsigned integer
+
+
+ 32-bit signed integer
+
+
+ 64-bit unsigned integer
+
+
+ 64-bit signed integer
+
+
+ 32-bit floating-point
+
+
+ 64-bit floating-point
+
+
+
+ result from a mavlink command
+
+ Command ACCEPTED and EXECUTED
+
+
+ Command TEMPORARY REJECTED/DENIED
+
+
+ Command PERMANENTLY DENIED
+
+
+ Command UNKNOWN/UNSUPPORTED
+
+
+ Command executed, but failed
+
+
+
+ result in a mavlink mission ack
+
+ mission accepted OK
+
+
+ generic error / not accepting mission commands at all right now
+
+
+ coordinate frame is not supported
+
+
+ command is not supported
+
+
+ mission item exceeds storage space
+
+
+ one of the parameters has an invalid value
+
+
+ param1 has an invalid value
+
+
+ param2 has an invalid value
+
+
+ param3 has an invalid value
+
+
+ param4 has an invalid value
+
+
+ x/param5 has an invalid value
+
+
+ y/param6 has an invalid value
+
+
+ param7 has an invalid value
+
+
+ received waypoint out of sequence
+
+
+ not accepting any mission commands from this communication partner
+
+
+
+ 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/.
+
+ System is unusable. This is a "panic" condition.
+
+
+ Action should be taken immediately. Indicates error in non-critical systems.
+
+
+ Action must be taken immediately. Indicates failure in a primary system.
+
+
+ Indicates an error in secondary/redundant systems.
+
+
+ Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.
+
+
+ An unusual event has occured, though not an error condition. This should be investigated for the root cause.
+
+
+ Normal operational messages. Useful for logging. No action is required for these messages.
+
+
+ Useful non-operational messages that can assist in debugging. These should not occur during normal operation.
+
+
+
+ Power supply status flags (bitmask)
+
+ main brick power supply valid
+
+
+ main servo power supply valid for FMU
+
+
+ USB power is connected
+
+
+ peripheral supply is in over-current state
+
+
+ hi-power peripheral supply is in over-current state
+
+
+ Power status has changed since boot
+
+
+
+ SERIAL_CONTROL device types
+
+ First telemetry port
+
+
+ Second telemetry port
+
+
+ First GPS port
+
+
+ Second GPS port
+
+
+ system shell
+
+
+
+ SERIAL_CONTROL flags (bitmask)
+
+ Set if this is a reply
+
+
+ Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message
+
+
+ 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
+
+
+ Block on writes to the serial port
+
+
+ Send multiple replies until port is drained
+
+
+
+ Enumeration of distance sensor types
+
+ Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+
+
+ Ultrasound rangefinder, e.g. MaxBotix units
+
+
+ Infrared rangefinder, e.g. Sharp units
+
+
+
+ Enumeration of sensor orientation, according to its rotations
+
+ Roll: 0, Pitch: 0, Yaw: 0
+
+
+ Roll: 0, Pitch: 0, Yaw: 45
+
+
+ Roll: 0, Pitch: 0, Yaw: 90
+
+
+ Roll: 0, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 0, Yaw: 180
+
+
+ Roll: 0, Pitch: 0, Yaw: 225
+
+
+ Roll: 0, Pitch: 0, Yaw: 270
+
+
+ Roll: 0, Pitch: 0, Yaw: 315
+
+
+ Roll: 180, Pitch: 0, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 45
+
+
+ Roll: 180, Pitch: 0, Yaw: 90
+
+
+ Roll: 180, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 180, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 225
+
+
+ Roll: 180, Pitch: 0, Yaw: 270
+
+
+ Roll: 180, Pitch: 0, Yaw: 315
+
+
+ Roll: 90, Pitch: 0, Yaw: 0
+
+
+ Roll: 90, Pitch: 0, Yaw: 45
+
+
+ Roll: 90, Pitch: 0, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 135
+
+
+ Roll: 270, Pitch: 0, Yaw: 0
+
+
+ Roll: 270, Pitch: 0, Yaw: 45
+
+
+ Roll: 270, Pitch: 0, Yaw: 90
+
+
+ Roll: 270, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 90, Yaw: 0
+
+
+ Roll: 0, Pitch: 270, Yaw: 0
+
+
+ Roll: 0, Pitch: 180, Yaw: 90
+
+
+ Roll: 0, Pitch: 180, Yaw: 270
+
+
+ Roll: 90, Pitch: 90, Yaw: 0
+
+
+ Roll: 180, Pitch: 90, Yaw: 0
+
+
+ Roll: 270, Pitch: 90, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 0
+
+
+ Roll: 270, Pitch: 180, Yaw: 0
+
+
+ Roll: 90, Pitch: 270, Yaw: 0
+
+
+ Roll: 180, Pitch: 270, Yaw: 0
+
+
+ Roll: 270, Pitch: 270, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 270
+
+
+ Roll: 315, Pitch: 315, Yaw: 315
+
+
+
+ Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.
+
+ Autopilot supports MISSION float message type.
+
+
+ Autopilot supports the new param float message type.
+
+
+ Autopilot supports MISSION_INT scaled integer message type.
+
+
+ Autopilot supports COMMAND_INT scaled integer message type.
+
+
+ Autopilot supports the new param union message type.
+
+
+ Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+
+
+ Autopilot supports commanding attitude offboard.
+
+
+ Autopilot supports commanding position and velocity targets in local NED frame.
+
+
+ Autopilot supports commanding position and velocity targets in global scaled integers.
+
+
+ Autopilot supports terrain protocol / data handling.
+
+
+ Autopilot supports direct actuator control.
+
+
+ Autopilot supports the flight termination command.
+
+
+ Autopilot supports onboard compass calibration.
+
+
+ Autopilot supports mavlink version 2.
+
+
+
+ Enumeration of estimator types
+
+ This is a naive estimator without any real covariance feedback.
+
+
+ Computer vision based estimate. Might be up to scale.
+
+
+ Visual-inertial estimate.
+
+
+ Plain GPS estimate.
+
+
+ Estimator integrating GPS and inertial sensing.
+
+
+
+ Enumeration of battery types
+
+ Not specified.
+
+
+ Lithium polymer battery
+
+
+ Lithium-iron-phosphate battery
+
+
+ Lithium-ION battery
+
+
+ Nickel metal hydride battery
+
+
+
+ Enumeration of battery functions
+
+ Battery function is unknown
+
+
+ Battery supports all flight systems
+
+
+ Battery for the propulsion system
+
+
+ Avionics battery
+
+
+ Payload battery
+
+
+
+ Enumeration of VTOL states
+
+ MAV is not configured as VTOL
+
+
+ VTOL is in transition from multicopter to fixed-wing
+
+
+ VTOL is in transition from fixed-wing to multicopter
+
+
+ VTOL is in multicopter state
+
+
+ VTOL is in fixed-wing state
+
+
+
+ Enumeration of landed detector states
+
+ MAV landed state is unknown
+
+
+ MAV is landed (on ground)
+
+
+ MAV is in air
+
+
+
+ Enumeration of the ADSB altimeter types
+
+ Altitude reported from a Baro source using QNH reference
+
+
+ Altitude reported from a GNSS source
+
+
+
+ ADSB classification for the type of vehicle emitting the transponder signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ These flags indicate status such as data validity of each data source. Set = data valid
+
+
+
+
+
+
+
+
+
+ Bitmask of options for the MAV_CMD_DO_REPOSITION
+
+ The aircraft should immediately transition into guided. This should not be set for follow me applications
+
+
+
+
+ Flags in EKF_STATUS message
+
+ True if the attitude estimate is good
+
+
+
+ True if the horizontal velocity estimate is good
+
+
+
+ True if the vertical velocity estimate is good
+
+
+
+ True if the horizontal position (relative) estimate is good
+
+
+
+ True if the horizontal position (absolute) estimate is good
+
+
+
+ True if the vertical position (absolute) estimate is good
+
+
+
+ True if the vertical position (above ground) estimate is good
+
+
+
+ True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate
+
+
+
+ True if the EKF has detected a GPS glitch
+
+
+
+
+
+
+ throttle as a percentage from 0 ~ 100
+
+
+
+ throttle as an absolute PWM value (normally in range of 1000~2000)
+
+
+
+ throttle pass-through from pilot's transmitter
+
+
+
+
+
+
+ ignore altitude field
+
+
+ ignore hdop field
+
+
+ ignore vdop field
+
+
+ ignore horizontal velocity field (vn and ve)
+
+
+ ignore vertical velocity field (vd)
+
+
+ ignore speed accuracy field
+
+
+ ignore horizontal accuracy field
+
+
+ ignore vertical accuracy field
+
+
+
+ Possible actions an aircraft can take to avoid a collision.
+
+ Ignore any potential collisions
+
+
+ Report potential collision
+
+
+ Ascend or Descend to avoid thread
+
+
+ Ascend or Descend to avoid thread
+
+
+ Aircraft to move perpendicular to the collision's velocity vector
+
+
+ Aircraft to fly directly back to its launch point
+
+
+ Aircraft to stop in place
+
+
+
+ Aircraft-rated danger from this threat.
+
+ Not a threat
+
+
+ Craft is mildly concerned about this threat
+
+
+ Craft is panicing, and may take actions to avoid threat
+
+
+
+ Source of information about this collision.
+
+ ID field references ADSB_VEHICLE packets
+
+
+ ID field references MAVLink SRC ID
+
+
+
+ Type of GPS fix
+
+ No GPS connected
+
+
+ No position information, GPS is connected
+
+
+ 2D position
+
+
+ 3D position
+
+
+ DGPS/SBAS aided 3D position
+
+
+ RTK float, 3D position
+
+
+ RTK Fixed, 3D position
+
+
+ Static fixed, typically used for base stations
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version
+
+
+ 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 wether the system is currently active or not and if an emergency occured. During the CRITICAL and EMERGENCY states the MAV is still considered to be active, but should start emergency procedures autonomously. After a failure occured it should first move from active to critical to allow manual intervention and then move to emergency after a certain timeout.
+ Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
+ Battery voltage, in millivolts (1 = 1 millivolt)
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery
+ Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+
+
+ The system time is the time of the master clock, typically the computer clock of the main onboard computer.
+ Timestamp of the master clock in microseconds since UNIX epoch.
+ Timestamp of the component clock since boot time in milliseconds.
+
+
+
+ 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.
+ Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009)
+ PING sequence
+ 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
+ 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system
+
+
+ Request to control this MAV
+ System the GCS requests control for
+ 0: request control of this MAV, 1: Release control of this MAV
+ 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.
+ 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 "!?,.-"
+
+
+ Accept / deny control of this MAV
+ ID of the GCS this message
+ 0: request control of this MAV, 1: Release control of this MAV
+ 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control
+
+
+ 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.
+ key
+
+
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with MAV_CMD_DO_SET_MODE INSTEAD. 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.
+ The system setting the mode
+ The new base mode
+ The new autopilot-specific mode. This field can be ignored by an autopilot.
+
+
+
+ Request to read the onboard parameter with the param_id string id. Onboard parameters are stored as key[const char*] -> 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 http://qgroundcontrol.org/parameter_interface for a full documentation of QGroundControl and IMU code.
+ System ID
+ Component 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
+ Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored)
+
+
+ Request all parameters of this component. After this request, all parameters are emitted.
+ System ID
+ Component ID
+
+
+ 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.
+ 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+ Total number of onboard parameters
+ Index of this onboard parameter
+
+
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default on system reboot. Send the ACTION MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM contents to EEPROM. IMPORTANT: The receiving component should acknowledge the new parameter value by sending a param_value message to all communication partners. This will also ensure that multiple GCS all have an up-to-date list of all parameters. If the sending GCS did not receive a PARAM_VALUE message within its timeout time, it should re-send the PARAM_SET message.
+ System ID
+ Component 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+
+
+ 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 for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude.
+ GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+
+
+ 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 for the global position estimate. This message can contain information for up to 20 satellites.
+ Number of satellites visible
+ Global satellite ID
+ 0: Satellite not used, 1: used for localization
+ Elevation (0: right on top of receiver, 90: on the horizon) of satellite
+ Direction of satellite, 0: 0 deg, 255: 360 deg.
+ Signal to noise ratio of satellite
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should always contain the true raw values without any scaling to allow data capture and system debugging.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X acceleration (raw)
+ Y acceleration (raw)
+ Z acceleration (raw)
+ Angular speed around X axis (raw)
+ Angular speed around Y axis (raw)
+ Angular speed around Z axis (raw)
+ X Magnetic field (raw)
+ Y Magnetic field (raw)
+ Z Magnetic field (raw)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Absolute pressure (raw)
+ Differential pressure 1 (raw, 0 if nonexistant)
+ Differential pressure 2 (raw, 0 if nonexistant)
+ Raw Temperature measurement (raw)
+
+
+ The pressure readings for the typical setup of one absolute and differential pressure sensor. The units are as specified in each field.
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right).
+ Timestamp (milliseconds since system boot)
+ Roll angle (rad, -pi..+pi)
+ Pitch angle (rad, -pi..+pi)
+ Yaw angle (rad, -pi..+pi)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion component 1, w (1 in null-rotation)
+ Quaternion component 2, x (0 in null-rotation)
+ Quaternion component 3, y (0 in null-rotation)
+ Quaternion component 4, z (0 in null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ X Speed
+ Y Speed
+ Z Speed
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well)
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude, positive north), expressed as m/s * 100
+ Ground Y Speed (Longitude, positive east), expressed as m/s * 100
+ Ground Z Speed (Altitude, positive down), expressed as m/s * 100
+ Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
+
+
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0, (100%) 10000. Channels that are inactive should be set to UINT16_MAX.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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%.
+ Timestamp (microseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos.
+ Servo output 1 value, in microseconds
+ Servo output 2 value, in microseconds
+ Servo output 3 value, in microseconds
+ Servo output 4 value, in microseconds
+ Servo output 5 value, in microseconds
+ Servo output 6 value, in microseconds
+ Servo output 7 value, in microseconds
+ Servo output 8 value, in microseconds
+
+ Servo output 9 value, in microseconds
+ Servo output 10 value, in microseconds
+ Servo output 11 value, in microseconds
+ Servo output 12 value, in microseconds
+ Servo output 13 value, in microseconds
+ Servo output 14 value, in microseconds
+ Servo output 15 value, in microseconds
+ Servo output 16 value, in microseconds
+
+
+ Request a partial list of mission items from the system/component. http://qgroundcontrol.org/mavlink/waypoint_protocol. If start and end index are the same, just send one waypoint.
+ System ID
+ Component ID
+ Start index, 0 by default
+ End index, -1 by default (-1: send list to end). Else a valid index of the list
+
+
+ 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!
+ System ID
+ Component ID
+ Start index, 0 by default and smaller / equal to the largest index of the current onboard list.
+ End index, equal or greater than start index.
+
+
+ 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). See also http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Sequence
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position, global: latitude
+ PARAM6 / y position: global: longitude
+ PARAM7 / z position: global: altitude (relative or absolute, depending on frame.
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ Set the mission item with sequence number seq as current item. This means that the MAV will continue to this mission item on the shortest path (not following the mission items in-between).
+ System ID
+ Component ID
+ Sequence
+
+
+ Message that announces the sequence number of the current active mission item. The MAV will fly towards this mission item.
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ 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 MISSIONs.
+ System ID
+ Component ID
+ Number of mission items in the sequence
+
+
+ Delete all mission items at once.
+ System ID
+ Component ID
+
+
+ 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 MISSION.
+ Sequence
+
+
+ Ack message during MISSION handling. The type field states if this message is a positive ack (type=0) or if an error happened (type=non-zero).
+ System ID
+ Component ID
+ See MAV_MISSION_RESULT enum
+
+
+ As local waypoints exist, the global MISSION reference allows to transform between the local coordinate frame and the global (GPS) coordinate frame. This can be necessary when e.g. in- and outdoor settings are connected and the MAV should move from in- to outdoor.
+ System ID
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Once the MAV sets a new GPS-Local correspondence, this message announces the origin (0,0,0) position
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Bind a RC channel to a parameter. The parameter should change accoding to the RC channel value.
+ System ID
+ Component 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
+ 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.
+ Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC.
+ Initial parameter value
+ Scale, maps the RC range [-1, 1] to a parameter value
+ Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation)
+ Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation)
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ 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/MISSIONs to accept and which to reject. Safety areas are often enforced by national or competition regulations.
+ System ID
+ Component ID
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ Read out the safety zone the MAV currently assumes.
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+ Attitude covariance
+
+
+ The state of the fixed wing navigation and position controller.
+ Current desired roll in degrees
+ Current desired pitch in degrees
+ Current desired heading in degrees
+ Bearing to current MISSION/target in degrees
+ Distance to active MISSION in meters
+ Current altitude error in meters
+ Current airspeed error in meters/second
+ Current crosstrack error on x-y plane in meters
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), above MSL
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s
+ Ground Y Speed (Longitude), expressed as m/s
+ Ground Z Speed (Altitude), expressed as m/s
+ Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.)
+
+
+ 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)
+ Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ X Position
+ Y Position
+ Z Position
+ X Speed (m/s)
+ Y Speed (m/s)
+ Z Speed (m/s)
+ X Acceleration (m/s^2)
+ Y Acceleration (m/s^2)
+ Z Acceleration (m/s^2)
+ Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.)
+
+
+ The PPM 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.
+ Timestamp (milliseconds since system boot)
+ 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.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+ The target requested to send the message stream.
+ The target requested to send the message stream.
+ The ID of the requested data stream
+ The requested message rate
+ 1 to start sending, 0 to stop sending.
+
+
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+ The ID of the requested data stream
+ The message rate
+ 1 stream is enabled, 0 stream is stopped.
+
+
+ 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 an buttons are also transmit as boolean values of their
+ The system to be controlled.
+ 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.
+ 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.
+ 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.
+ 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.
+ A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1.
+
+
+ The RAW values of the RC channels sent to the MAV to override info received from the RC radio. A value of UINT16_MAX means no change to that channel. A value of 0 means control of that channel should be released back to the RC radio. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.
+ System ID
+ Component ID
+ RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+
+
+ 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). See alsohttp://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4).
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Metrics typically displayed on a HUD for fixed wing aircraft
+ Current airspeed in m/s
+ Current ground speed in m/s
+ Current heading in degrees, in compass units (0..360, 0=north)
+ Current throttle setting in integer percent, 0 to 100
+ Current altitude (MSL), in meters
+ Current climb rate in meters/second
+
+
+ Message encoding a command with parameters as scaled integers. Scaling depends on the actual command value.
+ System ID
+ Component ID
+ The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Send a command with up to seven parameters to the MAV
+ System which should execute the command
+ Component which should execute the command, 0 for all components
+ Command ID, as defined by MAV_CMD enum.
+ 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)
+ Parameter 1, as defined by MAV_CMD enum.
+ Parameter 2, as defined by MAV_CMD enum.
+ Parameter 3, as defined by MAV_CMD enum.
+ Parameter 4, as defined by MAV_CMD enum.
+ Parameter 5, as defined by MAV_CMD enum.
+ Parameter 6, as defined by MAV_CMD enum.
+ Parameter 7, as defined by MAV_CMD enum.
+
+
+ Report status of a command. Includes feedback wether the command was executed.
+ Command ID, as defined by MAV_CMD enum.
+ See MAV_RESULT enum
+
+
+ Setpoint in roll, pitch, yaw and thrust from the operator
+ Timestamp in milliseconds since system boot
+ Desired roll rate in radians per second
+ Desired pitch rate in radians per second
+ Desired yaw rate in radians per second
+ Collective thrust, normalized to 0 .. 1
+ Flight mode switch position, 0.. 255
+ Override mode switch position, 0.. 255
+
+
+ Sets a desired vehicle attitude. Used by an external controller to command the vehicle (manual controller or other system).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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).
+ Timestamp in milliseconds 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.
+ System ID
+ Component ID
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds 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.
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ Roll
+ Pitch
+ Yaw
+
+
+ DEPRECATED PACKET! Suffers from missing airspeed fields and singularities due to Euler angles. Please use HIL_STATE_QUATERNION instead. Sent from simulation to autopilot. This packet is useful for high throughput applications such as hardware in the loop simulations.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Throttle 0 .. 1
+ Aux 1, -1 .. 1
+ Aux 2, -1 .. 1
+ Aux 3, -1 .. 1
+ Aux 4, -1 .. 1
+ System mode (MAV_MODE)
+ Navigation mode (MAV_NAV_MODE)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ RC channel 1 value, in microseconds
+ RC channel 2 value, in microseconds
+ RC channel 3 value, in microseconds
+ RC channel 4 value, in microseconds
+ RC channel 5 value, in microseconds
+ RC channel 6 value, in microseconds
+ RC channel 7 value, in microseconds
+ RC channel 8 value, in microseconds
+ RC channel 9 value, in microseconds
+ RC channel 10 value, in microseconds
+ RC channel 11 value, in microseconds
+ RC channel 12 value, in microseconds
+ Receive signal strength indicator, 0: 0%, 255: 100%
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs (replacement for HIL_CONTROLS)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.
+ System mode (MAV_MODE), includes arming state.
+ Flags as bitfield, reserved for future use.
+
+
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+ Timestamp (UNIX)
+ Sensor ID
+ Flow in pixels * 10 in x-sensor direction (dezi-pixels)
+ Flow in pixels * 10 in y-sensor direction (dezi-pixels)
+ Flow in meters in x-sensor direction, angular-speed compensated
+ Flow in meters in y-sensor direction, angular-speed compensated
+ Optical flow quality / confidence. 0: bad, 255: maximum quality
+ Ground distance in meters. Positive value: distance known. Negative value: Unknown distance
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X speed
+ Global Y speed
+ Global Z speed
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis (rad / sec)
+ Angular speed around Y axis (rad / sec)
+ Angular speed around Z axis (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature
+
+
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis in body frame (rad / sec)
+ Angular speed around Y axis in body frame (rad / sec)
+ Angular speed around Z axis in body frame (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure (airspeed) in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim.
+
+
+
+ Status of simulation environment, if used
+ True attitude quaternion component 1, w (1 in null-rotation)
+ True attitude quaternion component 2, x (0 in null-rotation)
+ True attitude quaternion component 3, y (0 in null-rotation)
+ True attitude quaternion component 4, z (0 in null-rotation)
+ Attitude roll expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees
+ Longitude in degrees
+ Altitude in meters
+ Horizontal position standard deviation
+ Vertical position standard deviation
+ True velocity in m/s in NORTH direction in earth-fixed NED frame
+ True velocity in m/s in EAST direction in earth-fixed NED frame
+ True velocity in m/s in DOWN direction in earth-fixed NED frame
+
+
+
+ Status generated by radio and injected into MAVLink stream.
+ Local signal strength
+ Remote signal strength
+ Remaining free buffer space in percent.
+ Background noise level
+ Remote background noise level
+ Receive errors
+ Count of error corrected packets
+
+
+ File transfer message
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ Time synchronization message.
+ Time sync timestamp 1
+ Time sync timestamp 2
+
+
+ Camera-IMU triggering and synchronisation message.
+ Timestamp for the image frame in microseconds
+ Image frame sequence
+
+
+ The global position, as returned by the Global Positioning System (GPS). This is
+ NOT the global position estimate of the sytem, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS ground speed (m/s * 100). If unknown, set to: 65535
+ GPS velocity in cm/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in cm/s in EAST direction in earth-fixed NED frame
+ GPS velocity in cm/s in DOWN direction in earth-fixed NED frame
+ Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535
+ Number of satellites visible. If unknown, set to 255
+
+
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ Indicated airspeed, expressed as m/s * 100
+ True airspeed, expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ The RAW IMU readings for secondary 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ Request a list of available logs. On some systems calling this may stop on-board logging until LOG_REQUEST_END is called.
+ System ID
+ Component ID
+ First log id (0 for first available)
+ Last log id (0xffff for last available)
+
+
+ Reply to LOG_REQUEST_LIST
+ Log id
+ Total number of logs
+ High log number
+ UTC timestamp of log in seconds since 1970, or 0 if not available
+ Size of the log (may be approximate) in bytes
+
+
+ Request a chunk of a log
+ System ID
+ Component ID
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes
+
+
+ Reply to LOG_REQUEST_DATA
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes (zero for end of log)
+ log data
+
+
+ Erase all logs
+ System ID
+ Component ID
+
+
+ Stop log transfer and resume normal logging
+ System ID
+ Component ID
+
+
+ data for injecting into the onboard GPS (used for DGPS)
+ System ID
+ Component ID
+ data length
+ raw data (110 is enough for 12 satellites of RTCMv2)
+
+
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+ Number of DGPS satellites
+ Age of DGPS info
+
+
+ Power supply status
+ 5V rail voltage in millivolts
+ servo rail voltage in millivolts
+ power supply status flags (see MAV_POWER_STATUS enum)
+
+
+ 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.
+ See SERIAL_CONTROL_DEV enum
+ See SERIAL_CONTROL_FLAG enum
+ Timeout for reply data in milliseconds
+ Baudrate of transfer. Zero means no change.
+ how many bytes in this transfer
+ serial data
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h)
+ total data size in bytes (set on ACK only)
+ Width of a matrix or image
+ Height of a matrix or image
+ number of packets beeing sent (set on ACK only)
+ payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only)
+ JPEG quality out of [1,100]
+
+
+ sequence number (starting with 0 on every transmission)
+ image data bytes
+
+
+ Time since system boot
+ Minimum distance the sensor can measure in centimeters
+ Maximum distance the sensor can measure in centimeters
+ Current distance reading
+ Type from MAV_DISTANCE_SENSOR enum.
+ Onboard ID of the sensor
+ Direction the sensor faces from MAV_SENSOR_ORIENTATION enum.
+ Measurement covariance in centimeters, 0 for unknown / invalid readings
+
+
+ Request for terrain data and terrain status
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
+
+
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the same as a lat/lon from a TERRAIN_REQUEST
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ bit within the terrain request mask
+ Terrain data in meters AMSL
+
+
+ Request that the vehicle report terrain height at the given location. Used by GCS to check if vehicle has all terrain data needed for a mission.
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+
+
+ Response from a TERRAIN_CHECK request
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+ grid spacing (zero if terrain at this location unavailable)
+ Terrain height in meters AMSL
+ Current vehicle height above lat/lon terrain height (meters)
+ Number of 4x4 terrain blocks waiting to be received or read from disk
+ Number of 4x4 terrain blocks in memory
+
+
+ Barometer readings for 2nd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ Motion capture attitude and position
+ Timestamp (micros since boot or Unix epoch)
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ X position in meters (NED)
+ Y position in meters (NED)
+ Z position in meters (NED)
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ System ID
+ Component ID
+ 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.
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ 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.
+
+
+ The current system altitude.
+ Timestamp (micros since boot or Unix epoch)
+ 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.
+ 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 AMSL by default and not the WGS84 altitude.
+ 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.
+ This is the altitude above the home position. It resets on each change of the current home position.
+ 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.
+ 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.
+
+
+ The autopilot is requesting a resource (file, binary, other type of data)
+ Request ID. This ID should be re-used when sending back URI contents
+ The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary
+ The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum)
+ The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream.
+ 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).
+
+
+ Barometer readings for 3rd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ current motion information from a designated system
+ Timestamp in milliseconds since system boot
+ bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3)
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ AMSL, in meters
+ target velocity (0,0,0) for unknown
+ linear target acceleration (0,0,0) for unknown
+ (1 0 0 0 for unknown)
+ (0 0 0 for unknown)
+ eph epv
+ button states or switches of a tracker device
+
+
+ The smoothed, monotonic system state used to feed the control loops of the system.
+ Timestamp (micros since boot or Unix epoch)
+ X acceleration in body frame
+ Y acceleration in body frame
+ Z acceleration in body frame
+ X velocity in body frame
+ Y velocity in body frame
+ Z velocity in body frame
+ X position in local frame
+ Y position in local frame
+ Z position in local frame
+ Airspeed, set to -1 if unknown
+ Variance of body velocity estimate
+ Variance in local position
+ The attitude, represented as Quaternion
+ Angular rate in roll axis
+ Angular rate in pitch axis
+ Angular rate in yaw axis
+
+
+ Battery information
+ Battery ID
+ Function of the battery
+ Type (chemistry) of the battery
+ Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature.
+ Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value.
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate
+ Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery
+
+
+ Version and capability of autopilot software
+ bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum)
+ Firmware version number
+ Middleware version number
+ Operating system version number
+ HW / board version (last 8 bytes should be silicon ID, if any)
+ 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.
+ 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.
+ 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.
+ ID of the board vendor
+ ID of the product
+ UID if provided by hardware
+
+
+ The location of a landing area captured from a downward facing camera
+ Timestamp (micros since boot or Unix epoch)
+ The ID of the target if multiple targets are present
+ MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc.
+ X-axis angular offset (in radians) of the target from the center of the image
+ Y-axis angular offset (in radians) of the target from the center of the image
+ Distance to the target from the vehicle in meters
+ Size in radians of target along x-axis
+ Size in radians of target along y-axis
+
+
+
+ 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 innovaton test ratios show the magnitude of the sensor innovation divided by the innovation check threshold. Under normal operation the innovaton 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.
+ Timestamp (micros since boot or Unix epoch)
+ Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS.
+ Velocity innovation test ratio
+ Horizontal position innovation test ratio
+ Vertical position innovation test ratio
+ Magnetometer innovation test ratio
+ Height above terrain innovation test ratio
+ True airspeed innovation test ratio
+ Horizontal position 1-STD accuracy relative to the EKF local origin (m)
+ Vertical position 1-STD accuracy relative to the EKF local origin (m)
+
+
+ Timestamp (micros since boot or Unix epoch)
+ Wind in X (NED) direction in m/s
+ Wind in Y (NED) direction in m/s
+ Wind in Z (NED) direction in m/s
+ Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate.
+ Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate.
+ AMSL altitude (m) this measurement was taken at
+ Horizontal speed 1-STD accuracy
+ Vertical speed 1-STD accuracy
+
+
+ GPS sensor input message. This is a raw sensor value sent by the GPS. This is NOT the global position estimate of the sytem.
+ Timestamp (micros since boot or Unix epoch)
+ ID of the GPS for multiple GPS inputs
+ Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided.
+ GPS time (milliseconds from start of GPS week)
+ GPS week number
+ 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in m (positive for up)
+ GPS HDOP horizontal dilution of position in m
+ GPS VDOP vertical dilution of position in m
+ GPS velocity in m/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in m/s in EAST direction in earth-fixed NED frame
+ GPS velocity in m/s in DOWN direction in earth-fixed NED frame
+ GPS speed accuracy in m/s
+ GPS horizontal accuracy in m
+ GPS vertical accuracy in m
+ Number of satellites visible.
+
+
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS (used for DGPS)
+ LSB: 1 means message is fragmented
+ data length
+ RTCM message (may be fragmented)
+
+
+ Vibration levels and accelerometer clipping
+ Timestamp (micros since boot or Unix epoch)
+ Vibration levels on X-axis
+ Vibration levels on Y-axis
+ Vibration levels on Z-axis
+ first accelerometer clipping count
+ second accelerometer clipping count
+ third accelerometer clipping count
+
+
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION command. The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. The position the system will return to and land on. 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. 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.
+ System ID.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ This interface replaces DATA_STREAM
+ The ID of the requested MAVLink message. v1.0 is limited to 254 messages.
+ The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent.
+
+
+ Provides state for additional features
+ The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration.
+ The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.
+
+
+ The location and information of an ADSB vehicle
+ ICAO address
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Type from ADSB_ALTITUDE_TYPE enum
+ Altitude(ASL) in millimeters
+ Course over ground in centidegrees
+ The horizontal velocity in centimeters/second
+ The vertical velocity in centimeters/second, positive is up
+ The callsign, 8+null
+ Type from ADSB_EMITTER_TYPE enum
+ Time since last communication in seconds
+ Flags to indicate various statuses including valid data fields
+ Squawk code
+
+
+ Information about a potential collision
+ Collision data source
+ Unique identifier, domain based on src field
+ Action that is being taken to avoid this collision
+ How concerned the aircraft is about this collision
+ Estimated time until collision occurs (seconds)
+ Closest vertical distance in meters between vehicle and object
+ Closest horizontal distance in meteres between vehicle and object
+
+
+ Message implementing parts of the V2 payload specs in V1 frames for transitional support.
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ 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/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.
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ 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.
+ Starting address of the debug variables
+ Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below
+ 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
+ Memory contents at specified address
+
+
+ Name
+ Timestamp
+ x
+ y
+ z
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Floating point value
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Signed integer value
+
+
+ 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).
+ Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY.
+ Status text message, without null termination character
+
+
+ Send a debug value. The index is used to discriminate between values. These values show up in the plot of QGroundControl as DEBUG N.
+ Timestamp (milliseconds since system boot)
+ index of debug variable
+ DEBUG value
+
+
+
+
+ Setup a MAVLink2 signing key. If called with secret_key of all zero and zero initial_timestamp will disable signing
+ system id of the target
+ component ID of the target
+ signing key
+ initial timestamp
+
+
+
+ Report button state change
+ Timestamp (milliseconds since system boot)
+ Time of last change of button state
+ Bitmap state of buttons
+
+
+
+ Control vehicle tone generation (buzzer)
+ System ID
+ Component ID
+ tune in board specific format
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.py
new file mode 100644
index 000000000..d46b04501
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.py
@@ -0,0 +1,13198 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: matrixpilot.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'matrixpilot'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_FLEXIFUNCTION_SET = 150
+MAVLINK_MSG_ID_FLEXIFUNCTION_READ_REQ = 151
+MAVLINK_MSG_ID_FLEXIFUNCTION_BUFFER_FUNCTION = 152
+MAVLINK_MSG_ID_FLEXIFUNCTION_BUFFER_FUNCTION_ACK = 153
+MAVLINK_MSG_ID_FLEXIFUNCTION_DIRECTORY = 155
+MAVLINK_MSG_ID_FLEXIFUNCTION_DIRECTORY_ACK = 156
+MAVLINK_MSG_ID_FLEXIFUNCTION_COMMAND = 157
+MAVLINK_MSG_ID_FLEXIFUNCTION_COMMAND_ACK = 158
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F2_A = 170
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F2_B = 171
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F4 = 172
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F5 = 173
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F6 = 174
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F7 = 175
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F8 = 176
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F13 = 177
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F14 = 178
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F15 = 179
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F16 = 180
+MAVLINK_MSG_ID_ALTITUDES = 181
+MAVLINK_MSG_ID_AIRSPEEDS = 182
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_flexifunction_set_message(MAVLink_message):
+ '''
+ Depreciated but used as a compiler flag. Do not remove
+ '''
+ id = MAVLINK_MSG_ID_FLEXIFUNCTION_SET
+ name = 'FLEXIFUNCTION_SET'
+ fieldnames = ['target_system', 'target_component']
+ ordered_fieldnames = [ 'target_system', 'target_component' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.xml
new file mode 100644
index 000000000..29d368d2a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/matrixpilot.xml
@@ -0,0 +1,284 @@
+
+
+ common.xml
+
+
+
+
+
+
+
+ Action required when performing CMD_PREFLIGHT_STORAGE
+
+ Read all parameters from storage
+
+
+ Write all parameters to storage
+
+
+ Clear all parameters in storage
+
+
+ Read specific parameters from storage
+
+
+ Write specific parameters to storage
+
+
+ Clear specific parameters in storage
+
+
+ do nothing
+
+
+
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Storage action: Action defined by MAV_PREFLIGHT_STORAGE_ACTION_ADVANCED
+ Storage area as defined by parameter database
+ Storage flags as defined by parameter database
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+
+
+
+ Depreciated but used as a compiler flag. Do not remove
+ System ID
+ Component ID
+
+
+ Reqest reading of flexifunction data
+ System ID
+ Component ID
+ Type of flexifunction data requested
+ index into data where needed
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ Total count of functions
+ Address in the flexifunction data, Set to 0xFFFF to use address in target memory
+ Size of the
+ Settings data
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ Settings data
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ Flexifunction command type
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ Command acknowledged
+ result of acknowledge
+
+
+ Backwards compatible MAVLink version of SERIAL_UDB_EXTRA - F2: Format Part A
+ Serial UDB Extra Time
+ Serial UDB Extra Status
+ Serial UDB Extra Latitude
+ Serial UDB Extra Longitude
+ Serial UDB Extra Altitude
+ Serial UDB Extra Waypoint Index
+ Serial UDB Extra Rmat 0
+ Serial UDB Extra Rmat 1
+ Serial UDB Extra Rmat 2
+ Serial UDB Extra Rmat 3
+ Serial UDB Extra Rmat 4
+ Serial UDB Extra Rmat 5
+ Serial UDB Extra Rmat 6
+ Serial UDB Extra Rmat 7
+ Serial UDB Extra Rmat 8
+ Serial UDB Extra GPS Course Over Ground
+ Serial UDB Extra Speed Over Ground
+ Serial UDB Extra CPU Load
+ Serial UDB Extra Voltage in MilliVolts
+ Serial UDB Extra 3D IMU Air Speed
+ Serial UDB Extra Estimated Wind 0
+ Serial UDB Extra Estimated Wind 1
+ Serial UDB Extra Estimated Wind 2
+ Serial UDB Extra Magnetic Field Earth 0
+ Serial UDB Extra Magnetic Field Earth 1
+ Serial UDB Extra Magnetic Field Earth 2
+ Serial UDB Extra Number of Sattelites in View
+ Serial UDB Extra GPS Horizontal Dilution of Precision
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA - F2: Part B
+ Serial UDB Extra Time
+ Serial UDB Extra PWM Input Channel 1
+ Serial UDB Extra PWM Input Channel 2
+ Serial UDB Extra PWM Input Channel 3
+ Serial UDB Extra PWM Input Channel 4
+ Serial UDB Extra PWM Input Channel 5
+ Serial UDB Extra PWM Input Channel 6
+ Serial UDB Extra PWM Input Channel 7
+ Serial UDB Extra PWM Input Channel 8
+ Serial UDB Extra PWM Input Channel 9
+ Serial UDB Extra PWM Input Channel 10
+ Serial UDB Extra PWM Output Channel 1
+ Serial UDB Extra PWM Output Channel 2
+ Serial UDB Extra PWM Output Channel 3
+ Serial UDB Extra PWM Output Channel 4
+ Serial UDB Extra PWM Output Channel 5
+ Serial UDB Extra PWM Output Channel 6
+ Serial UDB Extra PWM Output Channel 7
+ Serial UDB Extra PWM Output Channel 8
+ Serial UDB Extra PWM Output Channel 9
+ Serial UDB Extra PWM Output Channel 10
+ Serial UDB Extra IMU Location X
+ Serial UDB Extra IMU Location Y
+ Serial UDB Extra IMU Location Z
+ Serial UDB Extra Status Flags
+ Serial UDB Extra Oscillator Failure Count
+ Serial UDB Extra IMU Velocity X
+ Serial UDB Extra IMU Velocity Y
+ Serial UDB Extra IMU Velocity Z
+ Serial UDB Extra Current Waypoint Goal X
+ Serial UDB Extra Current Waypoint Goal Y
+ Serial UDB Extra Current Waypoint Goal Z
+ Serial UDB Extra Stack Memory Free
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F4: format
+ Serial UDB Extra Roll Stabilization with Ailerons Enabled
+ Serial UDB Extra Roll Stabilization with Rudder Enabled
+ Serial UDB Extra Pitch Stabilization Enabled
+ Serial UDB Extra Yaw Stabilization using Rudder Enabled
+ Serial UDB Extra Yaw Stabilization using Ailerons Enabled
+ Serial UDB Extra Navigation with Ailerons Enabled
+ Serial UDB Extra Navigation with Rudder Enabled
+ Serial UDB Extra Type of Alitude Hold when in Stabilized Mode
+ Serial UDB Extra Type of Alitude Hold when in Waypoint Mode
+ Serial UDB Extra Firmware racing mode enabled
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F5: format
+ Serial UDB YAWKP_AILERON Gain for Proporional control of navigation
+ Serial UDB YAWKD_AILERON Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD Gain for Rate control of roll stabilization
+ YAW_STABILIZATION_AILERON Proportional control
+ Gain For Boosting Manual Aileron control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F6: format
+ Serial UDB Extra PITCHGAIN Proportional Control
+ Serial UDB Extra Pitch Rate Control
+ Serial UDB Extra Rudder to Elevator Mix
+ Serial UDB Extra Roll to Elevator Mix
+ Gain For Boosting Manual Elevator control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F7: format
+ Serial UDB YAWKP_RUDDER Gain for Proporional control of navigation
+ Serial UDB YAWKD_RUDDER Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP_RUDDER Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD_RUDDER Gain for Rate control of roll stabilization
+ SERIAL UDB EXTRA Rudder Boost Gain to Manual Control when stabilized
+ Serial UDB Extra Return To Landing - Angle to Pitch Plane Down
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F8: format
+ Serial UDB Extra HEIGHT_TARGET_MAX
+ Serial UDB Extra HEIGHT_TARGET_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_MIN
+ Serial UDB Extra ALT_HOLD_PITCH_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_HIGH
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F13: format
+ Serial UDB Extra GPS Week Number
+ Serial UDB Extra MP Origin Latitude
+ Serial UDB Extra MP Origin Longitude
+ Serial UDB Extra MP Origin Altitude Above Sea Level
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F14: format
+ Serial UDB Extra Wind Estimation Enabled
+ Serial UDB Extra Type of GPS Unit
+ Serial UDB Extra Dead Reckoning Enabled
+ Serial UDB Extra Type of UDB Hardware
+ Serial UDB Extra Type of Airframe
+ Serial UDB Extra Reboot Regitster of DSPIC
+ Serial UDB Extra Last dspic Trap Flags
+ Serial UDB Extra Type Program Address of Last Trap
+ Serial UDB Extra Number of Ocillator Failures
+ Serial UDB Extra UDB Internal Clock Configuration
+ Serial UDB Extra Type of Flight Plan
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F15 and F16: format
+ Serial UDB Extra Model Name Of Vehicle
+ Serial UDB Extra Registraton Number of Vehicle
+
+
+ Serial UDB Extra Name of Expected Lead Pilot
+ Serial UDB Extra URL of Lead Pilot or Team
+
+
+ The altitude measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ GPS altitude in meters, expressed as * 1000 (millimeters), above MSL
+ IMU altitude above ground in meters, expressed as * 1000 (millimeters)
+ barometeric altitude above ground in meters, expressed as * 1000 (millimeters)
+ Optical flow altitude above ground in meters, expressed as * 1000 (millimeters)
+ Rangefinder Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Extra altitude above ground in meters, expressed as * 1000 (millimeters)
+
+
+ The airspeed measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ Airspeed estimate from IMU, cm/s
+ Pitot measured forward airpseed, cm/s
+ Hot wire anenometer measured airspeed, cm/s
+ Ultrasonic measured airspeed, cm/s
+ Angle of attack sensor, degrees * 10
+ Yaw angle sensor, degrees * 10
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/minimal.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/minimal.py
new file mode 100644
index 000000000..23cd2a5e0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/minimal.py
@@ -0,0 +1,822 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: minimal.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'minimal'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+ 2
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ PIXHAWK autopilot, http://pixhawk.ethz.ch
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Octorotor
+
+
+ Flapping wing
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAGS ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.py
new file mode 100644
index 000000000..9883b2b15
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.py
@@ -0,0 +1,12084 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: paparazzi.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'paparazzi'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SCRIPT_ITEM = 180
+MAVLINK_MSG_ID_SCRIPT_REQUEST = 181
+MAVLINK_MSG_ID_SCRIPT_REQUEST_LIST = 182
+MAVLINK_MSG_ID_SCRIPT_COUNT = 183
+MAVLINK_MSG_ID_SCRIPT_CURRENT = 184
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_script_item_message(MAVLink_message):
+ '''
+ Message encoding a mission script item. This message is
+ emitted upon a request for the next script item.
+ '''
+ id = MAVLINK_MSG_ID_SCRIPT_ITEM
+ name = 'SCRIPT_ITEM'
+ fieldnames = ['target_system', 'target_component', 'seq', 'name']
+ ordered_fieldnames = [ 'seq', 'target_system', 'target_component', 'name' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.xml
new file mode 100755
index 000000000..220007558
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/paparazzi.xml
@@ -0,0 +1,38 @@
+
+
+ common.xml
+ 3
+
+
+
+
+
+ Message encoding a mission script item. This message is emitted upon a request for the next script item.
+ System ID
+ Component ID
+ Sequence
+ The name of the mission script, NULL terminated.
+
+
+ Request script item with the sequence number seq. The response of the system to this message should be a SCRIPT_ITEM message.
+ System ID
+ Component ID
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ This message is emitted as response to SCRIPT_REQUEST_LIST by the MAV to get the number of mission scripts.
+ System ID
+ Component ID
+ Number of script items in the sequence
+
+
+ This message informs about the currently active SCRIPT.
+ Active Sequence
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.py
new file mode 100644
index 000000000..9c7afc8a8
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.py
@@ -0,0 +1,12261 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: python_array_test.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'python_array_test'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_ARRAY_TEST_0 = 150
+MAVLINK_MSG_ID_ARRAY_TEST_1 = 151
+MAVLINK_MSG_ID_ARRAY_TEST_3 = 153
+MAVLINK_MSG_ID_ARRAY_TEST_4 = 154
+MAVLINK_MSG_ID_ARRAY_TEST_5 = 155
+MAVLINK_MSG_ID_ARRAY_TEST_6 = 156
+MAVLINK_MSG_ID_ARRAY_TEST_7 = 157
+MAVLINK_MSG_ID_ARRAY_TEST_8 = 158
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_array_test_0_message(MAVLink_message):
+ '''
+ Array test #0.
+ '''
+ id = MAVLINK_MSG_ID_ARRAY_TEST_0
+ name = 'ARRAY_TEST_0'
+ fieldnames = ['v1', 'ar_i8', 'ar_u8', 'ar_u16', 'ar_u32']
+ ordered_fieldnames = [ 'ar_u32', 'ar_u16', 'v1', 'ar_i8', 'ar_u8' ]
+ format = '<4I4HB4b4B'
+ native_format = bytearray('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.xml
new file mode 100644
index 000000000..f230d0126
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/python_array_test.xml
@@ -0,0 +1,67 @@
+
+
+
+common.xml
+
+
+ Array test #0.
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #1.
+ Value array
+
+
+ Array test #3.
+ Stub field
+ Value array
+
+
+ Array test #4.
+ Value array
+ Stub field
+
+
+ Array test #5.
+ Value array
+ Value array
+
+
+ Array test #6.
+ Stub field
+ Stub field
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #7.
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #8.
+ Stub field
+ Value array
+ Value array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.py
new file mode 100644
index 000000000..9c0c0eefc
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.py
@@ -0,0 +1,13030 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: slugs.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'slugs'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_DO_NOTHING = 10001 # Does nothing.
+enums['MAV_CMD'][10001] = EnumEntry('MAV_CMD_DO_NOTHING', '''Does nothing.''')
+enums['MAV_CMD'][10001].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_RETURN_TO_BASE = 10011 # Return vehicle to base.
+enums['MAV_CMD'][10011] = EnumEntry('MAV_CMD_RETURN_TO_BASE', '''Return vehicle to base.''')
+enums['MAV_CMD'][10011].param[1] = '''0: return to base, 1: track mobile base'''
+MAV_CMD_STOP_RETURN_TO_BASE = 10012 # Stops the vehicle from returning to base and resumes flight.
+enums['MAV_CMD'][10012] = EnumEntry('MAV_CMD_STOP_RETURN_TO_BASE', '''Stops the vehicle from returning to base and resumes flight. ''')
+MAV_CMD_TURN_LIGHT = 10013 # Turns the vehicle's visible or infrared lights on or off.
+enums['MAV_CMD'][10013] = EnumEntry('MAV_CMD_TURN_LIGHT', '''Turns the vehicle's visible or infrared lights on or off.''')
+enums['MAV_CMD'][10013].param[1] = '''0: visible lights, 1: infrared lights'''
+enums['MAV_CMD'][10013].param[2] = '''0: turn on, 1: turn off'''
+MAV_CMD_GET_MID_LEVEL_COMMANDS = 10014 # Requests vehicle to send current mid-level commands to ground station.
+enums['MAV_CMD'][10014] = EnumEntry('MAV_CMD_GET_MID_LEVEL_COMMANDS', '''Requests vehicle to send current mid-level commands to ground station.''')
+MAV_CMD_MIDLEVEL_STORAGE = 10015 # Requests storage of mid-level commands.
+enums['MAV_CMD'][10015] = EnumEntry('MAV_CMD_MIDLEVEL_STORAGE', '''Requests storage of mid-level commands.''')
+enums['MAV_CMD'][10015].param[1] = '''Mid-level command storage: 0: read from flash/EEPROM, 1: write to flash/EEPROM'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# SLUGS_MODE
+enums['SLUGS_MODE'] = {}
+SLUGS_MODE_NONE = 0 # No change to SLUGS mode.
+enums['SLUGS_MODE'][0] = EnumEntry('SLUGS_MODE_NONE', '''No change to SLUGS mode.''')
+SLUGS_MODE_LIFTOFF = 1 # Vehicle is in liftoff mode.
+enums['SLUGS_MODE'][1] = EnumEntry('SLUGS_MODE_LIFTOFF', '''Vehicle is in liftoff mode.''')
+SLUGS_MODE_PASSTHROUGH = 2 # Vehicle is in passthrough mode, being controlled by a pilot.
+enums['SLUGS_MODE'][2] = EnumEntry('SLUGS_MODE_PASSTHROUGH', '''Vehicle is in passthrough mode, being controlled by a pilot.''')
+SLUGS_MODE_WAYPOINT = 3 # Vehicle is in waypoint mode, navigating to waypoints.
+enums['SLUGS_MODE'][3] = EnumEntry('SLUGS_MODE_WAYPOINT', '''Vehicle is in waypoint mode, navigating to waypoints.''')
+SLUGS_MODE_MID_LEVEL = 4 # Vehicle is executing mid-level commands.
+enums['SLUGS_MODE'][4] = EnumEntry('SLUGS_MODE_MID_LEVEL', '''Vehicle is executing mid-level commands.''')
+SLUGS_MODE_RETURNING = 5 # Vehicle is returning to the home location.
+enums['SLUGS_MODE'][5] = EnumEntry('SLUGS_MODE_RETURNING', '''Vehicle is returning to the home location.''')
+SLUGS_MODE_LANDING = 6 # Vehicle is landing.
+enums['SLUGS_MODE'][6] = EnumEntry('SLUGS_MODE_LANDING', '''Vehicle is landing.''')
+SLUGS_MODE_LOST = 7 # Lost connection with vehicle.
+enums['SLUGS_MODE'][7] = EnumEntry('SLUGS_MODE_LOST', '''Lost connection with vehicle.''')
+SLUGS_MODE_SELECTIVE_PASSTHROUGH = 8 # Vehicle is in selective passthrough mode, where selected surfaces are
+ # being manually controlled.
+enums['SLUGS_MODE'][8] = EnumEntry('SLUGS_MODE_SELECTIVE_PASSTHROUGH', '''Vehicle is in selective passthrough mode, where selected surfaces are being manually controlled.''')
+SLUGS_MODE_ISR = 9 # Vehicle is in ISR mode, performing reconaissance at a point specified
+ # by ISR_LOCATION message.
+enums['SLUGS_MODE'][9] = EnumEntry('SLUGS_MODE_ISR', '''Vehicle is in ISR mode, performing reconaissance at a point specified by ISR_LOCATION message.''')
+SLUGS_MODE_LINE_PATROL = 10 # Vehicle is patrolling along lines between waypoints.
+enums['SLUGS_MODE'][10] = EnumEntry('SLUGS_MODE_LINE_PATROL', '''Vehicle is patrolling along lines between waypoints.''')
+SLUGS_MODE_GROUNDED = 11 # Vehicle is grounded or an error has occurred.
+enums['SLUGS_MODE'][11] = EnumEntry('SLUGS_MODE_GROUNDED', '''Vehicle is grounded or an error has occurred.''')
+SLUGS_MODE_ENUM_END = 12 #
+enums['SLUGS_MODE'][12] = EnumEntry('SLUGS_MODE_ENUM_END', '''''')
+
+# CONTROL_SURFACE_FLAG
+enums['CONTROL_SURFACE_FLAG'] = {}
+CONTROL_SURFACE_FLAG_RIGHT_FLAP = 1 # 0b00000001 Right flap control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][1] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_FLAP', '''0b00000001 Right flap control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_FLAP = 2 # 0b00000010 Left flap control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][2] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_FLAP', '''0b00000010 Left flap control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RIGHT_ELEVATOR = 4 # 0b00000100 Right elevator control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][4] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_ELEVATOR', '''0b00000100 Right elevator control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_ELEVATOR = 8 # 0b00001000 Left elevator control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][8] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_ELEVATOR', '''0b00001000 Left elevator control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RUDDER = 16 # 0b00010000 Rudder control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][16] = EnumEntry('CONTROL_SURFACE_FLAG_RUDDER', '''0b00010000 Rudder control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RIGHT_AILERON = 32 # 0b00100000 Right aileron control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][32] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_AILERON', '''0b00100000 Right aileron control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_AILERON = 64 # 0b01000000 Left aileron control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][64] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_AILERON', '''0b01000000 Left aileron control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_THROTTLE = 128 # 0b10000000 Throttle control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][128] = EnumEntry('CONTROL_SURFACE_FLAG_THROTTLE', '''0b10000000 Throttle control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_ENUM_END = 129 #
+enums['CONTROL_SURFACE_FLAG'][129] = EnumEntry('CONTROL_SURFACE_FLAG_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_CPU_LOAD = 170
+MAVLINK_MSG_ID_SENSOR_BIAS = 172
+MAVLINK_MSG_ID_DIAGNOSTIC = 173
+MAVLINK_MSG_ID_SLUGS_NAVIGATION = 176
+MAVLINK_MSG_ID_DATA_LOG = 177
+MAVLINK_MSG_ID_GPS_DATE_TIME = 179
+MAVLINK_MSG_ID_MID_LVL_CMDS = 180
+MAVLINK_MSG_ID_CTRL_SRFC_PT = 181
+MAVLINK_MSG_ID_SLUGS_CAMERA_ORDER = 184
+MAVLINK_MSG_ID_CONTROL_SURFACE = 185
+MAVLINK_MSG_ID_SLUGS_MOBILE_LOCATION = 186
+MAVLINK_MSG_ID_SLUGS_CONFIGURATION_CAMERA = 188
+MAVLINK_MSG_ID_ISR_LOCATION = 189
+MAVLINK_MSG_ID_VOLT_SENSOR = 191
+MAVLINK_MSG_ID_PTZ_STATUS = 192
+MAVLINK_MSG_ID_UAV_STATUS = 193
+MAVLINK_MSG_ID_STATUS_GPS = 194
+MAVLINK_MSG_ID_NOVATEL_DIAG = 195
+MAVLINK_MSG_ID_SENSOR_DIAG = 196
+MAVLINK_MSG_ID_BOOT = 197
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_cpu_load_message(MAVLink_message):
+ '''
+ Sensor and DSC control loads.
+ '''
+ id = MAVLINK_MSG_ID_CPU_LOAD
+ name = 'CPU_LOAD'
+ fieldnames = ['sensLoad', 'ctrlLoad', 'batVolt']
+ ordered_fieldnames = [ 'batVolt', 'sensLoad', 'ctrlLoad' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.xml
new file mode 100755
index 000000000..a985eab38
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/slugs.xml
@@ -0,0 +1,339 @@
+
+
+ common.xml
+
+
+
+
+
+ Does nothing.
+ 1 to arm, 0 to disarm
+
+
+
+
+
+ Return vehicle to base.
+ 0: return to base, 1: track mobile base
+
+
+ Stops the vehicle from returning to base and resumes flight.
+
+
+ Turns the vehicle's visible or infrared lights on or off.
+ 0: visible lights, 1: infrared lights
+ 0: turn on, 1: turn off
+
+
+ Requests vehicle to send current mid-level commands to ground station.
+
+
+ Requests storage of mid-level commands.
+ Mid-level command storage: 0: read from flash/EEPROM, 1: write to flash/EEPROM
+
+
+
+
+
+ Slugs-specific navigation modes.
+
+ No change to SLUGS mode.
+
+
+ Vehicle is in liftoff mode.
+
+
+ Vehicle is in passthrough mode, being controlled by a pilot.
+
+
+ Vehicle is in waypoint mode, navigating to waypoints.
+
+
+ Vehicle is executing mid-level commands.
+
+
+ Vehicle is returning to the home location.
+
+
+ Vehicle is landing.
+
+
+ Lost connection with vehicle.
+
+
+ Vehicle is in selective passthrough mode, where selected surfaces are being manually controlled.
+
+
+ Vehicle is in ISR mode, performing reconaissance at a point specified by ISR_LOCATION message.
+
+
+ Vehicle is patrolling along lines between waypoints.
+
+
+ Vehicle is grounded or an error has occurred.
+
+
+
+
+ These flags encode the control surfaces for selective passthrough mode. If a bit is set then the pilot console
+ has control of the surface, and if not then the autopilot has control of the surface.
+
+ 0b10000000 Throttle control passes through to pilot console.
+
+
+ 0b01000000 Left aileron control passes through to pilot console.
+
+
+ 0b00100000 Right aileron control passes through to pilot console.
+
+
+ 0b00010000 Rudder control passes through to pilot console.
+
+
+ 0b00001000 Left elevator control passes through to pilot console.
+
+
+ 0b00000100 Right elevator control passes through to pilot console.
+
+
+ 0b00000010 Left flap control passes through to pilot console.
+
+
+ 0b00000001 Right flap control passes through to pilot console.
+
+
+
+
+
+
+
+ Sensor and DSC control loads.
+ Sensor DSC Load
+ Control DSC Load
+ Battery Voltage in millivolts
+
+
+
+ Accelerometer and gyro biases.
+ Accelerometer X bias (m/s)
+ Accelerometer Y bias (m/s)
+ Accelerometer Z bias (m/s)
+ Gyro X bias (rad/s)
+ Gyro Y bias (rad/s)
+ Gyro Z bias (rad/s)
+
+
+
+ Configurable diagnostic messages.
+ Diagnostic float 1
+ Diagnostic float 2
+ Diagnostic float 3
+ Diagnostic short 1
+ Diagnostic short 2
+ Diagnostic short 3
+
+
+
+ Data used in the navigation algorithm.
+ Measured Airspeed prior to the nav filter in m/s
+ Commanded Roll
+ Commanded Pitch
+ Commanded Turn rate
+ Y component of the body acceleration
+ Total Distance to Run on this leg of Navigation
+ Remaining distance to Run on this leg of Navigation
+ Origin WP
+ Destination WP
+ Commanded altitude in 0.1 m
+
+
+
+ Configurable data log probes to be used inside Simulink
+ Log value 1
+ Log value 2
+ Log value 3
+ Log value 4
+ Log value 5
+ Log value 6
+
+
+
+ Pilot console PWM messges.
+ Year reported by Gps
+ Month reported by Gps
+ Day reported by Gps
+ Hour reported by Gps
+ Min reported by Gps
+ Sec reported by Gps
+ Clock Status. See table 47 page 211 OEMStar Manual
+ Visible satellites reported by Gps
+ Used satellites in Solution
+ GPS+GLONASS satellites in Solution
+ GPS and GLONASS usage mask (bit 0 GPS_used? bit_4 GLONASS_used?)
+ Percent used GPS
+
+
+
+ Mid Level commands sent from the GS to the autopilot. These are only sent when being operated in mid-level commands mode from the ground.
+ The system setting the commands
+ Commanded Altitude in meters
+ Commanded Airspeed in m/s
+ Commanded Turnrate in rad/s
+
+
+
+ This message sets the control surfaces for selective passthrough mode.
+ The system setting the commands
+ Bitfield containing the passthrough configuration, see CONTROL_SURFACE_FLAG ENUM.
+
+
+
+ Orders generated to the SLUGS camera mount.
+ The system reporting the action
+ Order the mount to pan: -1 left, 0 No pan motion, +1 right
+ Order the mount to tilt: -1 down, 0 No tilt motion, +1 up
+ Order the zoom values 0 to 10
+ Orders the camera mount to move home. The other fields are ignored when this field is set. 1: move home, 0 ignored
+
+
+
+ Control for surface; pending and order to origin.
+ The system setting the commands
+ ID control surface send 0: throttle 1: aileron 2: elevator 3: rudder
+ Pending
+ Order to origin
+
+
+
+
+
+
+ Transmits the last known position of the mobile GS to the UAV. Very relevant when Track Mobile is enabled
+ The system reporting the action
+ Mobile Latitude
+ Mobile Longitude
+
+
+
+ Control for camara.
+ The system setting the commands
+ ID 0: brightness 1: aperture 2: iris 3: ICR 4: backlight
+ 1: up/on 2: down/off 3: auto/reset/no action
+
+
+
+ Transmits the position of watch
+ The system reporting the action
+ ISR Latitude
+ ISR Longitude
+ ISR Height
+ Option 1
+ Option 2
+ Option 3
+
+
+
+
+
+
+ Transmits the readings from the voltage and current sensors
+ It is the value of reading 2: 0 - Current, 1 - Foreward Sonar, 2 - Back Sonar, 3 - RPM
+ Voltage in uS of PWM. 0 uS = 0V, 20 uS = 21.5V
+ Depends on the value of r2Type (0) Current consumption in uS of PWM, 20 uS = 90Amp (1) Distance in cm (2) Distance in cm (3) Absolute value
+
+
+
+ Transmits the actual Pan, Tilt and Zoom values of the camera unit
+ The actual Zoom Value
+ The Pan value in 10ths of degree
+ The Tilt value in 10ths of degree
+
+
+
+ Transmits the actual status values UAV in flight
+ The ID system reporting the action
+ Latitude UAV
+ Longitude UAV
+ Altitude UAV
+ Speed UAV
+ Course UAV
+
+
+
+ This contains the status of the GPS readings
+ Number of times checksum has failed
+ The quality indicator, 0=fix not available or invalid, 1=GPS fix, 2=C/A differential GPS, 6=Dead reckoning mode, 7=Manual input mode (fixed position), 8=Simulator mode, 9= WAAS a
+ Indicates if GN, GL or GP messages are being received
+ A = data valid, V = data invalid
+ Magnetic variation, degrees
+ Magnetic variation direction E/W. Easterly variation (E) subtracts from True course and Westerly variation (W) adds to True course
+ Positioning system mode indicator. A - Autonomous;D-Differential; E-Estimated (dead reckoning) mode;M-Manual input; N-Data not valid
+
+
+
+ Transmits the diagnostics data from the Novatel OEMStar GPS
+ The Time Status. See Table 8 page 27 Novatel OEMStar Manual
+ Status Bitfield. See table 69 page 350 Novatel OEMstar Manual
+ solution Status. See table 44 page 197
+ position type. See table 43 page 196
+ velocity type. See table 43 page 196
+ Age of the position solution in seconds
+ Times the CRC has failed since boot
+
+
+
+ Diagnostic data Sensor MCU
+ Float field 1
+ Float field 2
+ Int 16 field 1
+ Int 8 field 1
+
+
+
+
+ The boot message indicates that a system is starting. The onboard software version allows to keep track of onboard soft/firmware revisions. This message allows the sensor and control MCUs to communicate version numbers on startup.
+ The onboard software version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/test.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/test.py
new file mode 100644
index 000000000..bd4663104
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/test.py
@@ -0,0 +1,715 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: test.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'test'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+ 3
+
+
+ Test all field types
+ char
+ string
+ uint8_t
+ uint16_t
+ uint32_t
+ uint64_t
+ int8_t
+ int16_t
+ int32_t
+ int64_t
+ float
+ double
+ uint8_t_array
+ uint16_t_array
+ uint32_t_array
+ uint64_t_array
+ int8_t_array
+ int16_t_array
+ int32_t_array
+ int64_t_array
+ float_array
+ double_array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/uAvionix.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/uAvionix.py
new file mode 100644
index 000000000..20cbf85e8
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/uAvionix.py
@@ -0,0 +1,753 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: uAvionix.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'uAvionix'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+
+
+
+
+
+
+
+
+ State flags for ADS-B transponder dynamic report
+
+
+
+
+
+
+
+ Transceiver RF control flags for ADS-B transponder dynamic reports
+
+
+
+
+
+ Status for ADS-B transponder dynamic input
+
+
+
+
+
+
+
+
+ Status flags for ADS-B transponder dynamic output
+
+
+
+
+
+
+ Definitions for aircraft size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GPS lataral offset encoding
+
+
+
+
+
+
+
+
+
+
+ GPS longitudinal offset encoding
+
+
+
+
+ Emergency status encoding
+
+
+
+
+
+
+
+
+
+
+
+
+ Static data to configure the ADS-B transponder (send within 10 sec of a POR and every 10 sec thereafter)
+ Vehicle address (24 bit)
+ Vehicle identifier (8 characters, null terminated, valid characters are A-Z, 0-9, " " only)
+ Transmitting vehicle type. See ADSB_EMITTER_TYPE enum
+ Aircraft length and width encoding (table 2-35 of DO-282B)
+ GPS antenna lateral offset (table 2-36 of DO-282B)
+ GPS antenna longitudinal offset from nose [if non-zero, take position (in meters) divide by 2 and add one] (table 2-37 DO-282B)
+ Aircraft stall speed in cm/s
+ ADS-B transponder reciever and transmit enable flags
+
+
+ Dynamic data used to generate ADS-B out transponder data (send at 5Hz)
+ UTC time in seconds since GPS epoch (Jan 6, 1980). If unknown set to UINT32_MAX
+ Latitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Longitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Altitude in mm (m * 1E-3) UP +ve. WGS84 altitude. If unknown set to INT32_MAX
+ 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: DGPS, 5: RTK
+ Number of satellites visible. If unknown set to UINT8_MAX
+ Barometric pressure altitude relative to a standard atmosphere of 1013.2 mBar and NOT bar corrected altitude (m * 1E-3). (up +ve). If unknown set to INT32_MAX
+ Horizontal accuracy in mm (m * 1E-3). If unknown set to UINT32_MAX
+ Vertical accuracy in cm. If unknown set to UINT16_MAX
+ Velocity accuracy in mm/s (m * 1E-3). If unknown set to UINT16_MAX
+ GPS vertical speed in cm/s. If unknown set to INT16_MAX
+ North-South velocity over ground in cm/s North +ve. If unknown set to INT16_MAX
+ East-West velocity over ground in cm/s East +ve. If unknown set to INT16_MAX
+ Emergency status
+ ADS-B transponder dynamic input state flags
+ Mode A code (typically 1200 [0x04B0] for VFR)
+
+
+ Transceiver heartbeat with health report (updated every 10s)
+ ADS-B transponder messages
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.py
new file mode 100644
index 000000000..656cb2789
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.py
@@ -0,0 +1,12041 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ualberta.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '1.0'
+DIALECT = 'ualberta'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_NAV_FILTER_BIAS = 220
+MAVLINK_MSG_ID_RADIO_CALIBRATION = 221
+MAVLINK_MSG_ID_UALBERTA_SYS_STATUS = 222
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+
+class MAVLink_nav_filter_bias_message(MAVLink_message):
+ '''
+ Accelerometer and Gyro biases from the navigation filter
+ '''
+ id = MAVLINK_MSG_ID_NAV_FILTER_BIAS
+ name = 'NAV_FILTER_BIAS'
+ fieldnames = ['usec', 'accel_0', 'accel_1', 'accel_2', 'gyro_0', 'gyro_1', 'gyro_2']
+ ordered_fieldnames = [ 'usec', 'accel_0', 'accel_1', 'accel_2', 'gyro_0', 'gyro_1', 'gyro_2' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.xml
new file mode 100644
index 000000000..bb57e8435
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v10/ualberta.xml
@@ -0,0 +1,76 @@
+
+
+ common.xml
+
+
+ Available autopilot modes for ualberta uav
+
+ Raw input pulse widts sent to output
+
+
+ Inputs are normalized using calibration, the converted back to raw pulse widths for output
+
+
+ dfsdfs
+
+
+ dfsfds
+
+
+ dfsdfsdfs
+
+
+
+ Navigation filter mode
+
+
+ AHRS mode
+
+
+ INS/GPS initialization mode
+
+
+ INS/GPS mode
+
+
+
+ Mode currently commanded by pilot
+
+ sdf
+
+
+ dfs
+
+
+ Rotomotion mode
+
+
+
+
+
+ Accelerometer and Gyro biases from the navigation filter
+ Timestamp (microseconds)
+ b_f[0]
+ b_f[1]
+ b_f[2]
+ b_f[0]
+ b_f[1]
+ b_f[2]
+
+
+ Complete set of calibration parameters for the radio
+ Aileron setpoints: left, center, right
+ Elevator setpoints: nose down, center, nose up
+ Rudder setpoints: nose left, center, nose right
+ Tail gyro mode/gain setpoints: heading hold, rate mode
+ Pitch curve setpoints (every 25%)
+ Throttle curve setpoints (every 25%)
+
+
+ System status specific to ualberta uav
+ System mode, see UALBERTA_AUTOPILOT_MODE ENUM
+ Navigation mode, see UALBERTA_NAV_MODE ENUM
+ Pilot mode, see UALBERTA_PILOT_MODE
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.py
new file mode 100644
index 000000000..36f0427f3
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.py
@@ -0,0 +1,12907 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ASLUAV.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'ASLUAV'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_RESET_MPPT = 40001 # Mission command to reset Maximum Power Point Tracker (MPPT)
+enums['MAV_CMD'][40001] = EnumEntry('MAV_CMD_RESET_MPPT', '''Mission command to reset Maximum Power Point Tracker (MPPT)''')
+enums['MAV_CMD'][40001].param[1] = '''MPPT number'''
+enums['MAV_CMD'][40001].param[2] = '''Empty'''
+enums['MAV_CMD'][40001].param[3] = '''Empty'''
+enums['MAV_CMD'][40001].param[4] = '''Empty'''
+enums['MAV_CMD'][40001].param[5] = '''Empty'''
+enums['MAV_CMD'][40001].param[6] = '''Empty'''
+enums['MAV_CMD'][40001].param[7] = '''Empty'''
+MAV_CMD_PAYLOAD_CONTROL = 40002 # Mission command to perform a power cycle on payload
+enums['MAV_CMD'][40002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL', '''Mission command to perform a power cycle on payload''')
+enums['MAV_CMD'][40002].param[1] = '''Complete power cycle'''
+enums['MAV_CMD'][40002].param[2] = '''VISensor power cycle'''
+enums['MAV_CMD'][40002].param[3] = '''Empty'''
+enums['MAV_CMD'][40002].param[4] = '''Empty'''
+enums['MAV_CMD'][40002].param[5] = '''Empty'''
+enums['MAV_CMD'][40002].param[6] = '''Empty'''
+enums['MAV_CMD'][40002].param[7] = '''Empty'''
+MAV_CMD_ENUM_END = 40003 #
+enums['MAV_CMD'][40003] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SENS_POWER = 201
+MAVLINK_MSG_ID_SENS_MPPT = 202
+MAVLINK_MSG_ID_ASLCTRL_DATA = 203
+MAVLINK_MSG_ID_ASLCTRL_DEBUG = 204
+MAVLINK_MSG_ID_ASLUAV_STATUS = 205
+MAVLINK_MSG_ID_EKF_EXT = 206
+MAVLINK_MSG_ID_ASL_OBCTRL = 207
+MAVLINK_MSG_ID_SENS_ATMOS = 208
+MAVLINK_MSG_ID_SENS_BATMON = 209
+MAVLINK_MSG_ID_FW_SOARING_DATA = 210
+MAVLINK_MSG_ID_SENSORPOD_STATUS = 211
+MAVLINK_MSG_ID_SENS_POWER_BOARD = 212
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_sens_power_message(MAVLink_message):
+ '''
+ Voltage and current sensor data
+ '''
+ id = MAVLINK_MSG_ID_SENS_POWER
+ name = 'SENS_POWER'
+ fieldnames = ['adc121_vspb_volt', 'adc121_cspb_amp', 'adc121_cs1_amp', 'adc121_cs2_amp']
+ ordered_fieldnames = [ 'adc121_vspb_volt', 'adc121_cspb_amp', 'adc121_cs1_amp', 'adc121_cs2_amp' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.xml
new file mode 100644
index 000000000..5eba2d187
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ASLUAV.xml
@@ -0,0 +1,202 @@
+
+
+
+
+ common.xml
+
+
+
+
+ Mission command to reset Maximum Power Point Tracker (MPPT)
+ MPPT number
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a power cycle on payload
+ Complete power cycle
+ VISensor power cycle
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Voltage and current sensor data
+ Power board voltage sensor reading in volts
+ Power board current sensor reading in amps
+ Board current sensor 1 reading in amps
+ Board current sensor 2 reading in amps
+
+
+ Maximum Power Point Tracker (MPPT) sensor data for solar module power performance tracking
+ MPPT last timestamp
+ MPPT1 voltage
+ MPPT1 current
+ MPPT1 pwm
+ MPPT1 status
+ MPPT2 voltage
+ MPPT2 current
+ MPPT2 pwm
+ MPPT2 status
+ MPPT3 voltage
+ MPPT3 current
+ MPPT3 pwm
+ MPPT3 status
+
+
+ ASL-fixed-wing controller data
+ Timestamp
+ ASLCTRL control-mode (manual, stabilized, auto, etc...)
+ See sourcecode for a description of these values...
+
+
+ Pitch angle [deg]
+ Pitch angle reference[deg]
+
+
+
+
+
+
+ Airspeed reference [m/s]
+
+ Yaw angle [deg]
+ Yaw angle reference[deg]
+ Roll angle [deg]
+ Roll angle reference[deg]
+
+
+
+
+
+
+
+
+ ASL-fixed-wing controller debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+
+
+ Extended state information for ASLUAVs
+ Status of the position-indicator LEDs
+ Status of the IRIDIUM satellite communication system
+ Status vector for up to 8 servos
+ Motor RPM
+
+
+
+ Extended EKF state estimates for ASLUAVs
+ Time since system start [us]
+ Magnitude of wind velocity (in lateral inertial plane) [m/s]
+ Wind heading angle from North [rad]
+ Z (Down) component of inertial wind velocity [m/s]
+ Magnitude of air velocity [m/s]
+ Sideslip angle [rad]
+ Angle of attack [rad]
+
+
+ Off-board controls/commands for ASLUAVs
+ Time since system start [us]
+ Elevator command [~]
+ Throttle command [~]
+ Throttle 2 command [~]
+ Left aileron command [~]
+ Right aileron command [~]
+ Rudder command [~]
+ Off-board computer status
+
+
+ Atmospheric sensors (temperature, humidity, ...)
+ Ambient temperature [degrees Celsius]
+ Relative humidity [%]
+
+
+ Battery pack monitoring data for Li-Ion batteries
+ Battery pack temperature in [deg C]
+ Battery pack voltage in [mV]
+ Battery pack current in [mA]
+ Battery pack state-of-charge
+ Battery monitor status report bits in Hex
+ Battery monitor serial number in Hex
+ Battery monitor sensor host FET control in Hex
+ Battery pack cell 1 voltage in [mV]
+ Battery pack cell 2 voltage in [mV]
+ Battery pack cell 3 voltage in [mV]
+ Battery pack cell 4 voltage in [mV]
+ Battery pack cell 5 voltage in [mV]
+ Battery pack cell 6 voltage in [mV]
+
+
+ Fixed-wing soaring (i.e. thermal seeking) data
+ Timestamp [ms]
+ Timestamp since last mode change[ms]
+ Thermal core updraft strength [m/s]
+ Thermal radius [m]
+ Thermal center latitude [deg]
+ Thermal center longitude [deg]
+ Variance W
+ Variance R
+ Variance Lat
+ Variance Lon
+ Suggested loiter radius [m]
+ Suggested loiter direction
+ Distance to soar point [m]
+ Expected sink rate at current airspeed, roll and throttle [m/s]
+ Measurement / updraft speed at current/local airplane position [m/s]
+ Measurement / roll angle tracking error [deg]
+ Expected measurement 1
+ Expected measurement 2
+ Thermal drift (from estimator prediction step only) [m/s]
+ Thermal drift (from estimator prediction step only) [m/s]
+ Total specific energy change (filtered) [m/s]
+ Debug variable 1
+ Debug variable 2
+ Control Mode [-]
+ Data valid [-]
+
+
+ Monitoring of sensorpod status
+ Timestamp in linuxtime [ms] (since 1.1.1970)
+ Rate of ROS topic 1
+ Rate of ROS topic 2
+ Rate of ROS topic 3
+ Rate of ROS topic 4
+ Number of recording nodes
+ Temperature of sensorpod CPU in [deg C]
+ Free space available in recordings directory in [Gb] * 1e2
+
+
+ Monitoring of power board status
+ Timestamp
+ Power board status register
+ Power board leds status
+ Power board system voltage
+ Power board servo voltage
+ Power board left motor current sensor
+ Power board right motor current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board aux current sensor
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/__init__.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.py
new file mode 100644
index 000000000..c23497bc9
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.py
@@ -0,0 +1,15949 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ardupilotmega.xml,common.xml,uAvionix.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'ardupilotmega'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_ALTITUDE_WAIT = 83 # Mission command to wait for an altitude or downwards vertical speed.
+ # This is meant for high altitude balloon
+ # launches, allowing the aircraft to be idle
+ # until either an altitude is reached or a
+ # negative vertical speed is reached
+ # (indicating early balloon burst). The wiggle
+ # time is how often to wiggle the control
+ # surfaces to prevent them seizing up.
+enums['MAV_CMD'][83] = EnumEntry('MAV_CMD_NAV_ALTITUDE_WAIT', '''Mission command to wait for an altitude or downwards vertical speed. This is meant for high altitude balloon launches, allowing the aircraft to be idle until either an altitude is reached or a negative vertical speed is reached (indicating early balloon burst). The wiggle time is how often to wiggle the control surfaces to prevent them seizing up.''')
+enums['MAV_CMD'][83].param[1] = '''altitude (m)'''
+enums['MAV_CMD'][83].param[2] = '''descent speed (m/s)'''
+enums['MAV_CMD'][83].param[3] = '''Wiggle Time (s)'''
+enums['MAV_CMD'][83].param[4] = '''Empty'''
+enums['MAV_CMD'][83].param[5] = '''Empty'''
+enums['MAV_CMD'][83].param[6] = '''Empty'''
+enums['MAV_CMD'][83].param[7] = '''Empty'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_GRIPPER = 211 # Mission command to operate EPM gripper
+enums['MAV_CMD'][211] = EnumEntry('MAV_CMD_DO_GRIPPER', '''Mission command to operate EPM gripper''')
+enums['MAV_CMD'][211].param[1] = '''gripper number (a number from 1 to max number of grippers on the vehicle)'''
+enums['MAV_CMD'][211].param[2] = '''gripper action (0=release, 1=grab. See GRIPPER_ACTIONS enum)'''
+enums['MAV_CMD'][211].param[3] = '''Empty'''
+enums['MAV_CMD'][211].param[4] = '''Empty'''
+enums['MAV_CMD'][211].param[5] = '''Empty'''
+enums['MAV_CMD'][211].param[6] = '''Empty'''
+enums['MAV_CMD'][211].param[7] = '''Empty'''
+MAV_CMD_DO_AUTOTUNE_ENABLE = 212 # Enable/disable autotune
+enums['MAV_CMD'][212] = EnumEntry('MAV_CMD_DO_AUTOTUNE_ENABLE', '''Enable/disable autotune''')
+enums['MAV_CMD'][212].param[1] = '''enable (1: enable, 0:disable)'''
+enums['MAV_CMD'][212].param[2] = '''Empty'''
+enums['MAV_CMD'][212].param[3] = '''Empty'''
+enums['MAV_CMD'][212].param[4] = '''Empty'''
+enums['MAV_CMD'][212].param[5] = '''Empty'''
+enums['MAV_CMD'][212].param[6] = '''Empty'''
+enums['MAV_CMD'][212].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_POWER_OFF_INITIATED = 42000 # A system wide power-off event has been initiated.
+enums['MAV_CMD'][42000] = EnumEntry('MAV_CMD_POWER_OFF_INITIATED', '''A system wide power-off event has been initiated.''')
+enums['MAV_CMD'][42000].param[1] = '''Empty'''
+enums['MAV_CMD'][42000].param[2] = '''Empty'''
+enums['MAV_CMD'][42000].param[3] = '''Empty'''
+enums['MAV_CMD'][42000].param[4] = '''Empty'''
+enums['MAV_CMD'][42000].param[5] = '''Empty'''
+enums['MAV_CMD'][42000].param[6] = '''Empty'''
+enums['MAV_CMD'][42000].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_FLY_CLICK = 42001 # FLY button has been clicked.
+enums['MAV_CMD'][42001] = EnumEntry('MAV_CMD_SOLO_BTN_FLY_CLICK', '''FLY button has been clicked.''')
+enums['MAV_CMD'][42001].param[1] = '''Empty'''
+enums['MAV_CMD'][42001].param[2] = '''Empty'''
+enums['MAV_CMD'][42001].param[3] = '''Empty'''
+enums['MAV_CMD'][42001].param[4] = '''Empty'''
+enums['MAV_CMD'][42001].param[5] = '''Empty'''
+enums['MAV_CMD'][42001].param[6] = '''Empty'''
+enums['MAV_CMD'][42001].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_FLY_HOLD = 42002 # FLY button has been held for 1.5 seconds.
+enums['MAV_CMD'][42002] = EnumEntry('MAV_CMD_SOLO_BTN_FLY_HOLD', '''FLY button has been held for 1.5 seconds.''')
+enums['MAV_CMD'][42002].param[1] = '''Takeoff altitude'''
+enums['MAV_CMD'][42002].param[2] = '''Empty'''
+enums['MAV_CMD'][42002].param[3] = '''Empty'''
+enums['MAV_CMD'][42002].param[4] = '''Empty'''
+enums['MAV_CMD'][42002].param[5] = '''Empty'''
+enums['MAV_CMD'][42002].param[6] = '''Empty'''
+enums['MAV_CMD'][42002].param[7] = '''Empty'''
+MAV_CMD_SOLO_BTN_PAUSE_CLICK = 42003 # PAUSE button has been clicked.
+enums['MAV_CMD'][42003] = EnumEntry('MAV_CMD_SOLO_BTN_PAUSE_CLICK', '''PAUSE button has been clicked.''')
+enums['MAV_CMD'][42003].param[1] = '''1 if Solo is in a shot mode, 0 otherwise'''
+enums['MAV_CMD'][42003].param[2] = '''Empty'''
+enums['MAV_CMD'][42003].param[3] = '''Empty'''
+enums['MAV_CMD'][42003].param[4] = '''Empty'''
+enums['MAV_CMD'][42003].param[5] = '''Empty'''
+enums['MAV_CMD'][42003].param[6] = '''Empty'''
+enums['MAV_CMD'][42003].param[7] = '''Empty'''
+MAV_CMD_DO_START_MAG_CAL = 42424 # Initiate a magnetometer calibration
+enums['MAV_CMD'][42424] = EnumEntry('MAV_CMD_DO_START_MAG_CAL', '''Initiate a magnetometer calibration''')
+enums['MAV_CMD'][42424].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42424].param[2] = '''Automatically retry on failure (0=no retry, 1=retry).'''
+enums['MAV_CMD'][42424].param[3] = '''Save without user input (0=require input, 1=autosave).'''
+enums['MAV_CMD'][42424].param[4] = '''Delay (seconds)'''
+enums['MAV_CMD'][42424].param[5] = '''Autoreboot (0=user reboot, 1=autoreboot)'''
+enums['MAV_CMD'][42424].param[6] = '''Empty'''
+enums['MAV_CMD'][42424].param[7] = '''Empty'''
+MAV_CMD_DO_ACCEPT_MAG_CAL = 42425 # Initiate a magnetometer calibration
+enums['MAV_CMD'][42425] = EnumEntry('MAV_CMD_DO_ACCEPT_MAG_CAL', '''Initiate a magnetometer calibration''')
+enums['MAV_CMD'][42425].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42425].param[2] = '''Empty'''
+enums['MAV_CMD'][42425].param[3] = '''Empty'''
+enums['MAV_CMD'][42425].param[4] = '''Empty'''
+enums['MAV_CMD'][42425].param[5] = '''Empty'''
+enums['MAV_CMD'][42425].param[6] = '''Empty'''
+enums['MAV_CMD'][42425].param[7] = '''Empty'''
+MAV_CMD_DO_CANCEL_MAG_CAL = 42426 # Cancel a running magnetometer calibration
+enums['MAV_CMD'][42426] = EnumEntry('MAV_CMD_DO_CANCEL_MAG_CAL', '''Cancel a running magnetometer calibration''')
+enums['MAV_CMD'][42426].param[1] = '''uint8_t bitmask of magnetometers (0 means all)'''
+enums['MAV_CMD'][42426].param[2] = '''Empty'''
+enums['MAV_CMD'][42426].param[3] = '''Empty'''
+enums['MAV_CMD'][42426].param[4] = '''Empty'''
+enums['MAV_CMD'][42426].param[5] = '''Empty'''
+enums['MAV_CMD'][42426].param[6] = '''Empty'''
+enums['MAV_CMD'][42426].param[7] = '''Empty'''
+MAV_CMD_SET_FACTORY_TEST_MODE = 42427 # Command autopilot to get into factory test/diagnostic mode
+enums['MAV_CMD'][42427] = EnumEntry('MAV_CMD_SET_FACTORY_TEST_MODE', '''Command autopilot to get into factory test/diagnostic mode''')
+enums['MAV_CMD'][42427].param[1] = '''0 means get out of test mode, 1 means get into test mode'''
+enums['MAV_CMD'][42427].param[2] = '''Empty'''
+enums['MAV_CMD'][42427].param[3] = '''Empty'''
+enums['MAV_CMD'][42427].param[4] = '''Empty'''
+enums['MAV_CMD'][42427].param[5] = '''Empty'''
+enums['MAV_CMD'][42427].param[6] = '''Empty'''
+enums['MAV_CMD'][42427].param[7] = '''Empty'''
+MAV_CMD_DO_SEND_BANNER = 42428 # Reply with the version banner
+enums['MAV_CMD'][42428] = EnumEntry('MAV_CMD_DO_SEND_BANNER', '''Reply with the version banner''')
+enums['MAV_CMD'][42428].param[1] = '''Empty'''
+enums['MAV_CMD'][42428].param[2] = '''Empty'''
+enums['MAV_CMD'][42428].param[3] = '''Empty'''
+enums['MAV_CMD'][42428].param[4] = '''Empty'''
+enums['MAV_CMD'][42428].param[5] = '''Empty'''
+enums['MAV_CMD'][42428].param[6] = '''Empty'''
+enums['MAV_CMD'][42428].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_RESET = 42501 # Causes the gimbal to reset and boot as if it was just powered on
+enums['MAV_CMD'][42501] = EnumEntry('MAV_CMD_GIMBAL_RESET', '''Causes the gimbal to reset and boot as if it was just powered on''')
+enums['MAV_CMD'][42501].param[1] = '''Empty'''
+enums['MAV_CMD'][42501].param[2] = '''Empty'''
+enums['MAV_CMD'][42501].param[3] = '''Empty'''
+enums['MAV_CMD'][42501].param[4] = '''Empty'''
+enums['MAV_CMD'][42501].param[5] = '''Empty'''
+enums['MAV_CMD'][42501].param[6] = '''Empty'''
+enums['MAV_CMD'][42501].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS = 42502 # Reports progress and success or failure of gimbal axis calibration
+ # procedure
+enums['MAV_CMD'][42502] = EnumEntry('MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS', '''Reports progress and success or failure of gimbal axis calibration procedure''')
+enums['MAV_CMD'][42502].param[1] = '''Gimbal axis we're reporting calibration progress for'''
+enums['MAV_CMD'][42502].param[2] = '''Current calibration progress for this axis, 0x64=100%'''
+enums['MAV_CMD'][42502].param[3] = '''Status of the calibration'''
+enums['MAV_CMD'][42502].param[4] = '''Empty'''
+enums['MAV_CMD'][42502].param[5] = '''Empty'''
+enums['MAV_CMD'][42502].param[6] = '''Empty'''
+enums['MAV_CMD'][42502].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION = 42503 # Starts commutation calibration on the gimbal
+enums['MAV_CMD'][42503] = EnumEntry('MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION', '''Starts commutation calibration on the gimbal''')
+enums['MAV_CMD'][42503].param[1] = '''Empty'''
+enums['MAV_CMD'][42503].param[2] = '''Empty'''
+enums['MAV_CMD'][42503].param[3] = '''Empty'''
+enums['MAV_CMD'][42503].param[4] = '''Empty'''
+enums['MAV_CMD'][42503].param[5] = '''Empty'''
+enums['MAV_CMD'][42503].param[6] = '''Empty'''
+enums['MAV_CMD'][42503].param[7] = '''Empty'''
+MAV_CMD_GIMBAL_FULL_RESET = 42505 # Erases gimbal application and parameters
+enums['MAV_CMD'][42505] = EnumEntry('MAV_CMD_GIMBAL_FULL_RESET', '''Erases gimbal application and parameters''')
+enums['MAV_CMD'][42505].param[1] = '''Magic number'''
+enums['MAV_CMD'][42505].param[2] = '''Magic number'''
+enums['MAV_CMD'][42505].param[3] = '''Magic number'''
+enums['MAV_CMD'][42505].param[4] = '''Magic number'''
+enums['MAV_CMD'][42505].param[5] = '''Magic number'''
+enums['MAV_CMD'][42505].param[6] = '''Magic number'''
+enums['MAV_CMD'][42505].param[7] = '''Magic number'''
+MAV_CMD_ENUM_END = 42506 #
+enums['MAV_CMD'][42506] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# LIMITS_STATE
+enums['LIMITS_STATE'] = {}
+LIMITS_INIT = 0 # pre-initialization
+enums['LIMITS_STATE'][0] = EnumEntry('LIMITS_INIT', '''pre-initialization''')
+LIMITS_DISABLED = 1 # disabled
+enums['LIMITS_STATE'][1] = EnumEntry('LIMITS_DISABLED', '''disabled''')
+LIMITS_ENABLED = 2 # checking limits
+enums['LIMITS_STATE'][2] = EnumEntry('LIMITS_ENABLED', '''checking limits''')
+LIMITS_TRIGGERED = 3 # a limit has been breached
+enums['LIMITS_STATE'][3] = EnumEntry('LIMITS_TRIGGERED', '''a limit has been breached''')
+LIMITS_RECOVERING = 4 # taking action eg. RTL
+enums['LIMITS_STATE'][4] = EnumEntry('LIMITS_RECOVERING', '''taking action eg. RTL''')
+LIMITS_RECOVERED = 5 # we're no longer in breach of a limit
+enums['LIMITS_STATE'][5] = EnumEntry('LIMITS_RECOVERED', '''we're no longer in breach of a limit''')
+LIMITS_STATE_ENUM_END = 6 #
+enums['LIMITS_STATE'][6] = EnumEntry('LIMITS_STATE_ENUM_END', '''''')
+
+# LIMIT_MODULE
+enums['LIMIT_MODULE'] = {}
+LIMIT_GPSLOCK = 1 # pre-initialization
+enums['LIMIT_MODULE'][1] = EnumEntry('LIMIT_GPSLOCK', '''pre-initialization''')
+LIMIT_GEOFENCE = 2 # disabled
+enums['LIMIT_MODULE'][2] = EnumEntry('LIMIT_GEOFENCE', '''disabled''')
+LIMIT_ALTITUDE = 4 # checking limits
+enums['LIMIT_MODULE'][4] = EnumEntry('LIMIT_ALTITUDE', '''checking limits''')
+LIMIT_MODULE_ENUM_END = 5 #
+enums['LIMIT_MODULE'][5] = EnumEntry('LIMIT_MODULE_ENUM_END', '''''')
+
+# RALLY_FLAGS
+enums['RALLY_FLAGS'] = {}
+FAVORABLE_WIND = 1 # Flag set when requiring favorable winds for landing.
+enums['RALLY_FLAGS'][1] = EnumEntry('FAVORABLE_WIND', '''Flag set when requiring favorable winds for landing.''')
+LAND_IMMEDIATELY = 2 # Flag set when plane is to immediately descend to break altitude and
+ # land without GCS intervention. Flag not set
+ # when plane is to loiter at Rally point until
+ # commanded to land.
+enums['RALLY_FLAGS'][2] = EnumEntry('LAND_IMMEDIATELY', '''Flag set when plane is to immediately descend to break altitude and land without GCS intervention. Flag not set when plane is to loiter at Rally point until commanded to land.''')
+RALLY_FLAGS_ENUM_END = 3 #
+enums['RALLY_FLAGS'][3] = EnumEntry('RALLY_FLAGS_ENUM_END', '''''')
+
+# PARACHUTE_ACTION
+enums['PARACHUTE_ACTION'] = {}
+PARACHUTE_DISABLE = 0 # Disable parachute release
+enums['PARACHUTE_ACTION'][0] = EnumEntry('PARACHUTE_DISABLE', '''Disable parachute release''')
+PARACHUTE_ENABLE = 1 # Enable parachute release
+enums['PARACHUTE_ACTION'][1] = EnumEntry('PARACHUTE_ENABLE', '''Enable parachute release''')
+PARACHUTE_RELEASE = 2 # Release parachute
+enums['PARACHUTE_ACTION'][2] = EnumEntry('PARACHUTE_RELEASE', '''Release parachute''')
+PARACHUTE_ACTION_ENUM_END = 3 #
+enums['PARACHUTE_ACTION'][3] = EnumEntry('PARACHUTE_ACTION_ENUM_END', '''''')
+
+# GRIPPER_ACTIONS
+enums['GRIPPER_ACTIONS'] = {}
+GRIPPER_ACTION_RELEASE = 0 # gripper release of cargo
+enums['GRIPPER_ACTIONS'][0] = EnumEntry('GRIPPER_ACTION_RELEASE', '''gripper release of cargo''')
+GRIPPER_ACTION_GRAB = 1 # gripper grabs onto cargo
+enums['GRIPPER_ACTIONS'][1] = EnumEntry('GRIPPER_ACTION_GRAB', '''gripper grabs onto cargo''')
+GRIPPER_ACTIONS_ENUM_END = 2 #
+enums['GRIPPER_ACTIONS'][2] = EnumEntry('GRIPPER_ACTIONS_ENUM_END', '''''')
+
+# CAMERA_STATUS_TYPES
+enums['CAMERA_STATUS_TYPES'] = {}
+CAMERA_STATUS_TYPE_HEARTBEAT = 0 # Camera heartbeat, announce camera component ID at 1hz
+enums['CAMERA_STATUS_TYPES'][0] = EnumEntry('CAMERA_STATUS_TYPE_HEARTBEAT', '''Camera heartbeat, announce camera component ID at 1hz''')
+CAMERA_STATUS_TYPE_TRIGGER = 1 # Camera image triggered
+enums['CAMERA_STATUS_TYPES'][1] = EnumEntry('CAMERA_STATUS_TYPE_TRIGGER', '''Camera image triggered''')
+CAMERA_STATUS_TYPE_DISCONNECT = 2 # Camera connection lost
+enums['CAMERA_STATUS_TYPES'][2] = EnumEntry('CAMERA_STATUS_TYPE_DISCONNECT', '''Camera connection lost''')
+CAMERA_STATUS_TYPE_ERROR = 3 # Camera unknown error
+enums['CAMERA_STATUS_TYPES'][3] = EnumEntry('CAMERA_STATUS_TYPE_ERROR', '''Camera unknown error''')
+CAMERA_STATUS_TYPE_LOWBATT = 4 # Camera battery low. Parameter p1 shows reported voltage
+enums['CAMERA_STATUS_TYPES'][4] = EnumEntry('CAMERA_STATUS_TYPE_LOWBATT', '''Camera battery low. Parameter p1 shows reported voltage''')
+CAMERA_STATUS_TYPE_LOWSTORE = 5 # Camera storage low. Parameter p1 shows reported shots remaining
+enums['CAMERA_STATUS_TYPES'][5] = EnumEntry('CAMERA_STATUS_TYPE_LOWSTORE', '''Camera storage low. Parameter p1 shows reported shots remaining''')
+CAMERA_STATUS_TYPE_LOWSTOREV = 6 # Camera storage low. Parameter p1 shows reported video minutes
+ # remaining
+enums['CAMERA_STATUS_TYPES'][6] = EnumEntry('CAMERA_STATUS_TYPE_LOWSTOREV', '''Camera storage low. Parameter p1 shows reported video minutes remaining''')
+CAMERA_STATUS_TYPES_ENUM_END = 7 #
+enums['CAMERA_STATUS_TYPES'][7] = EnumEntry('CAMERA_STATUS_TYPES_ENUM_END', '''''')
+
+# CAMERA_FEEDBACK_FLAGS
+enums['CAMERA_FEEDBACK_FLAGS'] = {}
+CAMERA_FEEDBACK_PHOTO = 0 # Shooting photos, not video
+enums['CAMERA_FEEDBACK_FLAGS'][0] = EnumEntry('CAMERA_FEEDBACK_PHOTO', '''Shooting photos, not video''')
+CAMERA_FEEDBACK_VIDEO = 1 # Shooting video, not stills
+enums['CAMERA_FEEDBACK_FLAGS'][1] = EnumEntry('CAMERA_FEEDBACK_VIDEO', '''Shooting video, not stills''')
+CAMERA_FEEDBACK_BADEXPOSURE = 2 # Unable to achieve requested exposure (e.g. shutter speed too low)
+enums['CAMERA_FEEDBACK_FLAGS'][2] = EnumEntry('CAMERA_FEEDBACK_BADEXPOSURE', '''Unable to achieve requested exposure (e.g. shutter speed too low)''')
+CAMERA_FEEDBACK_CLOSEDLOOP = 3 # Closed loop feedback from camera, we know for sure it has successfully
+ # taken a picture
+enums['CAMERA_FEEDBACK_FLAGS'][3] = EnumEntry('CAMERA_FEEDBACK_CLOSEDLOOP', '''Closed loop feedback from camera, we know for sure it has successfully taken a picture''')
+CAMERA_FEEDBACK_OPENLOOP = 4 # Open loop camera, an image trigger has been requested but we can't
+ # know for sure it has successfully taken a
+ # picture
+enums['CAMERA_FEEDBACK_FLAGS'][4] = EnumEntry('CAMERA_FEEDBACK_OPENLOOP', '''Open loop camera, an image trigger has been requested but we can't know for sure it has successfully taken a picture''')
+CAMERA_FEEDBACK_FLAGS_ENUM_END = 5 #
+enums['CAMERA_FEEDBACK_FLAGS'][5] = EnumEntry('CAMERA_FEEDBACK_FLAGS_ENUM_END', '''''')
+
+# MAV_MODE_GIMBAL
+enums['MAV_MODE_GIMBAL'] = {}
+MAV_MODE_GIMBAL_UNINITIALIZED = 0 # Gimbal is powered on but has not started initializing yet
+enums['MAV_MODE_GIMBAL'][0] = EnumEntry('MAV_MODE_GIMBAL_UNINITIALIZED', '''Gimbal is powered on but has not started initializing yet''')
+MAV_MODE_GIMBAL_CALIBRATING_PITCH = 1 # Gimbal is currently running calibration on the pitch axis
+enums['MAV_MODE_GIMBAL'][1] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_PITCH', '''Gimbal is currently running calibration on the pitch axis''')
+MAV_MODE_GIMBAL_CALIBRATING_ROLL = 2 # Gimbal is currently running calibration on the roll axis
+enums['MAV_MODE_GIMBAL'][2] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_ROLL', '''Gimbal is currently running calibration on the roll axis''')
+MAV_MODE_GIMBAL_CALIBRATING_YAW = 3 # Gimbal is currently running calibration on the yaw axis
+enums['MAV_MODE_GIMBAL'][3] = EnumEntry('MAV_MODE_GIMBAL_CALIBRATING_YAW', '''Gimbal is currently running calibration on the yaw axis''')
+MAV_MODE_GIMBAL_INITIALIZED = 4 # Gimbal has finished calibrating and initializing, but is relaxed
+ # pending reception of first rate command from
+ # copter
+enums['MAV_MODE_GIMBAL'][4] = EnumEntry('MAV_MODE_GIMBAL_INITIALIZED', '''Gimbal has finished calibrating and initializing, but is relaxed pending reception of first rate command from copter''')
+MAV_MODE_GIMBAL_ACTIVE = 5 # Gimbal is actively stabilizing
+enums['MAV_MODE_GIMBAL'][5] = EnumEntry('MAV_MODE_GIMBAL_ACTIVE', '''Gimbal is actively stabilizing''')
+MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT = 6 # Gimbal is relaxed because it missed more than 10 expected rate command
+ # messages in a row. Gimbal will move back to
+ # active mode when it receives a new rate
+ # command
+enums['MAV_MODE_GIMBAL'][6] = EnumEntry('MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT', '''Gimbal is relaxed because it missed more than 10 expected rate command messages in a row. Gimbal will move back to active mode when it receives a new rate command''')
+MAV_MODE_GIMBAL_ENUM_END = 7 #
+enums['MAV_MODE_GIMBAL'][7] = EnumEntry('MAV_MODE_GIMBAL_ENUM_END', '''''')
+
+# GIMBAL_AXIS
+enums['GIMBAL_AXIS'] = {}
+GIMBAL_AXIS_YAW = 0 # Gimbal yaw axis
+enums['GIMBAL_AXIS'][0] = EnumEntry('GIMBAL_AXIS_YAW', '''Gimbal yaw axis''')
+GIMBAL_AXIS_PITCH = 1 # Gimbal pitch axis
+enums['GIMBAL_AXIS'][1] = EnumEntry('GIMBAL_AXIS_PITCH', '''Gimbal pitch axis''')
+GIMBAL_AXIS_ROLL = 2 # Gimbal roll axis
+enums['GIMBAL_AXIS'][2] = EnumEntry('GIMBAL_AXIS_ROLL', '''Gimbal roll axis''')
+GIMBAL_AXIS_ENUM_END = 3 #
+enums['GIMBAL_AXIS'][3] = EnumEntry('GIMBAL_AXIS_ENUM_END', '''''')
+
+# GIMBAL_AXIS_CALIBRATION_STATUS
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'] = {}
+GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS = 0 # Axis calibration is in progress
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][0] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS', '''Axis calibration is in progress''')
+GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED = 1 # Axis calibration succeeded
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][1] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED', '''Axis calibration succeeded''')
+GIMBAL_AXIS_CALIBRATION_STATUS_FAILED = 2 # Axis calibration failed
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][2] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_FAILED', '''Axis calibration failed''')
+GIMBAL_AXIS_CALIBRATION_STATUS_ENUM_END = 3 #
+enums['GIMBAL_AXIS_CALIBRATION_STATUS'][3] = EnumEntry('GIMBAL_AXIS_CALIBRATION_STATUS_ENUM_END', '''''')
+
+# GIMBAL_AXIS_CALIBRATION_REQUIRED
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'] = {}
+GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN = 0 # Whether or not this axis requires calibration is unknown at this time
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][0] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN', '''Whether or not this axis requires calibration is unknown at this time''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE = 1 # This axis requires calibration
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][1] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE', '''This axis requires calibration''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE = 2 # This axis does not require calibration
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][2] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE', '''This axis does not require calibration''')
+GIMBAL_AXIS_CALIBRATION_REQUIRED_ENUM_END = 3 #
+enums['GIMBAL_AXIS_CALIBRATION_REQUIRED'][3] = EnumEntry('GIMBAL_AXIS_CALIBRATION_REQUIRED_ENUM_END', '''''')
+
+# GOPRO_HEARTBEAT_STATUS
+enums['GOPRO_HEARTBEAT_STATUS'] = {}
+GOPRO_HEARTBEAT_STATUS_DISCONNECTED = 0 # No GoPro connected
+enums['GOPRO_HEARTBEAT_STATUS'][0] = EnumEntry('GOPRO_HEARTBEAT_STATUS_DISCONNECTED', '''No GoPro connected''')
+GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE = 1 # The detected GoPro is not HeroBus compatible
+enums['GOPRO_HEARTBEAT_STATUS'][1] = EnumEntry('GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE', '''The detected GoPro is not HeroBus compatible''')
+GOPRO_HEARTBEAT_STATUS_CONNECTED = 2 # A HeroBus compatible GoPro is connected
+enums['GOPRO_HEARTBEAT_STATUS'][2] = EnumEntry('GOPRO_HEARTBEAT_STATUS_CONNECTED', '''A HeroBus compatible GoPro is connected''')
+GOPRO_HEARTBEAT_STATUS_ERROR = 3 # An unrecoverable error was encountered with the connected GoPro, it
+ # may require a power cycle
+enums['GOPRO_HEARTBEAT_STATUS'][3] = EnumEntry('GOPRO_HEARTBEAT_STATUS_ERROR', '''An unrecoverable error was encountered with the connected GoPro, it may require a power cycle''')
+GOPRO_HEARTBEAT_STATUS_ENUM_END = 4 #
+enums['GOPRO_HEARTBEAT_STATUS'][4] = EnumEntry('GOPRO_HEARTBEAT_STATUS_ENUM_END', '''''')
+
+# GOPRO_HEARTBEAT_FLAGS
+enums['GOPRO_HEARTBEAT_FLAGS'] = {}
+GOPRO_FLAG_RECORDING = 1 # GoPro is currently recording
+enums['GOPRO_HEARTBEAT_FLAGS'][1] = EnumEntry('GOPRO_FLAG_RECORDING', '''GoPro is currently recording''')
+GOPRO_HEARTBEAT_FLAGS_ENUM_END = 2 #
+enums['GOPRO_HEARTBEAT_FLAGS'][2] = EnumEntry('GOPRO_HEARTBEAT_FLAGS_ENUM_END', '''''')
+
+# GOPRO_REQUEST_STATUS
+enums['GOPRO_REQUEST_STATUS'] = {}
+GOPRO_REQUEST_SUCCESS = 0 # The write message with ID indicated succeeded
+enums['GOPRO_REQUEST_STATUS'][0] = EnumEntry('GOPRO_REQUEST_SUCCESS', '''The write message with ID indicated succeeded''')
+GOPRO_REQUEST_FAILED = 1 # The write message with ID indicated failed
+enums['GOPRO_REQUEST_STATUS'][1] = EnumEntry('GOPRO_REQUEST_FAILED', '''The write message with ID indicated failed''')
+GOPRO_REQUEST_STATUS_ENUM_END = 2 #
+enums['GOPRO_REQUEST_STATUS'][2] = EnumEntry('GOPRO_REQUEST_STATUS_ENUM_END', '''''')
+
+# GOPRO_COMMAND
+enums['GOPRO_COMMAND'] = {}
+GOPRO_COMMAND_POWER = 0 # (Get/Set)
+enums['GOPRO_COMMAND'][0] = EnumEntry('GOPRO_COMMAND_POWER', '''(Get/Set)''')
+GOPRO_COMMAND_CAPTURE_MODE = 1 # (Get/Set)
+enums['GOPRO_COMMAND'][1] = EnumEntry('GOPRO_COMMAND_CAPTURE_MODE', '''(Get/Set)''')
+GOPRO_COMMAND_SHUTTER = 2 # (___/Set)
+enums['GOPRO_COMMAND'][2] = EnumEntry('GOPRO_COMMAND_SHUTTER', '''(___/Set)''')
+GOPRO_COMMAND_BATTERY = 3 # (Get/___)
+enums['GOPRO_COMMAND'][3] = EnumEntry('GOPRO_COMMAND_BATTERY', '''(Get/___)''')
+GOPRO_COMMAND_MODEL = 4 # (Get/___)
+enums['GOPRO_COMMAND'][4] = EnumEntry('GOPRO_COMMAND_MODEL', '''(Get/___)''')
+GOPRO_COMMAND_VIDEO_SETTINGS = 5 # (Get/Set)
+enums['GOPRO_COMMAND'][5] = EnumEntry('GOPRO_COMMAND_VIDEO_SETTINGS', '''(Get/Set)''')
+GOPRO_COMMAND_LOW_LIGHT = 6 # (Get/Set)
+enums['GOPRO_COMMAND'][6] = EnumEntry('GOPRO_COMMAND_LOW_LIGHT', '''(Get/Set)''')
+GOPRO_COMMAND_PHOTO_RESOLUTION = 7 # (Get/Set)
+enums['GOPRO_COMMAND'][7] = EnumEntry('GOPRO_COMMAND_PHOTO_RESOLUTION', '''(Get/Set)''')
+GOPRO_COMMAND_PHOTO_BURST_RATE = 8 # (Get/Set)
+enums['GOPRO_COMMAND'][8] = EnumEntry('GOPRO_COMMAND_PHOTO_BURST_RATE', '''(Get/Set)''')
+GOPRO_COMMAND_PROTUNE = 9 # (Get/Set)
+enums['GOPRO_COMMAND'][9] = EnumEntry('GOPRO_COMMAND_PROTUNE', '''(Get/Set)''')
+GOPRO_COMMAND_PROTUNE_WHITE_BALANCE = 10 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][10] = EnumEntry('GOPRO_COMMAND_PROTUNE_WHITE_BALANCE', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_COLOUR = 11 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][11] = EnumEntry('GOPRO_COMMAND_PROTUNE_COLOUR', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_GAIN = 12 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][12] = EnumEntry('GOPRO_COMMAND_PROTUNE_GAIN', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_SHARPNESS = 13 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][13] = EnumEntry('GOPRO_COMMAND_PROTUNE_SHARPNESS', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_PROTUNE_EXPOSURE = 14 # (Get/Set) Hero 3+ Only
+enums['GOPRO_COMMAND'][14] = EnumEntry('GOPRO_COMMAND_PROTUNE_EXPOSURE', '''(Get/Set) Hero 3+ Only''')
+GOPRO_COMMAND_TIME = 15 # (Get/Set)
+enums['GOPRO_COMMAND'][15] = EnumEntry('GOPRO_COMMAND_TIME', '''(Get/Set)''')
+GOPRO_COMMAND_CHARGING = 16 # (Get/Set)
+enums['GOPRO_COMMAND'][16] = EnumEntry('GOPRO_COMMAND_CHARGING', '''(Get/Set)''')
+GOPRO_COMMAND_ENUM_END = 17 #
+enums['GOPRO_COMMAND'][17] = EnumEntry('GOPRO_COMMAND_ENUM_END', '''''')
+
+# GOPRO_CAPTURE_MODE
+enums['GOPRO_CAPTURE_MODE'] = {}
+GOPRO_CAPTURE_MODE_VIDEO = 0 # Video mode
+enums['GOPRO_CAPTURE_MODE'][0] = EnumEntry('GOPRO_CAPTURE_MODE_VIDEO', '''Video mode''')
+GOPRO_CAPTURE_MODE_PHOTO = 1 # Photo mode
+enums['GOPRO_CAPTURE_MODE'][1] = EnumEntry('GOPRO_CAPTURE_MODE_PHOTO', '''Photo mode''')
+GOPRO_CAPTURE_MODE_BURST = 2 # Burst mode, hero 3+ only
+enums['GOPRO_CAPTURE_MODE'][2] = EnumEntry('GOPRO_CAPTURE_MODE_BURST', '''Burst mode, hero 3+ only''')
+GOPRO_CAPTURE_MODE_TIME_LAPSE = 3 # Time lapse mode, hero 3+ only
+enums['GOPRO_CAPTURE_MODE'][3] = EnumEntry('GOPRO_CAPTURE_MODE_TIME_LAPSE', '''Time lapse mode, hero 3+ only''')
+GOPRO_CAPTURE_MODE_MULTI_SHOT = 4 # Multi shot mode, hero 4 only
+enums['GOPRO_CAPTURE_MODE'][4] = EnumEntry('GOPRO_CAPTURE_MODE_MULTI_SHOT', '''Multi shot mode, hero 4 only''')
+GOPRO_CAPTURE_MODE_PLAYBACK = 5 # Playback mode, hero 4 only, silver only except when LCD or HDMI is
+ # connected to black
+enums['GOPRO_CAPTURE_MODE'][5] = EnumEntry('GOPRO_CAPTURE_MODE_PLAYBACK', '''Playback mode, hero 4 only, silver only except when LCD or HDMI is connected to black''')
+GOPRO_CAPTURE_MODE_SETUP = 6 # Playback mode, hero 4 only
+enums['GOPRO_CAPTURE_MODE'][6] = EnumEntry('GOPRO_CAPTURE_MODE_SETUP', '''Playback mode, hero 4 only''')
+GOPRO_CAPTURE_MODE_UNKNOWN = 255 # Mode not yet known
+enums['GOPRO_CAPTURE_MODE'][255] = EnumEntry('GOPRO_CAPTURE_MODE_UNKNOWN', '''Mode not yet known''')
+GOPRO_CAPTURE_MODE_ENUM_END = 256 #
+enums['GOPRO_CAPTURE_MODE'][256] = EnumEntry('GOPRO_CAPTURE_MODE_ENUM_END', '''''')
+
+# GOPRO_RESOLUTION
+enums['GOPRO_RESOLUTION'] = {}
+GOPRO_RESOLUTION_480p = 0 # 848 x 480 (480p)
+enums['GOPRO_RESOLUTION'][0] = EnumEntry('GOPRO_RESOLUTION_480p', '''848 x 480 (480p)''')
+GOPRO_RESOLUTION_720p = 1 # 1280 x 720 (720p)
+enums['GOPRO_RESOLUTION'][1] = EnumEntry('GOPRO_RESOLUTION_720p', '''1280 x 720 (720p)''')
+GOPRO_RESOLUTION_960p = 2 # 1280 x 960 (960p)
+enums['GOPRO_RESOLUTION'][2] = EnumEntry('GOPRO_RESOLUTION_960p', '''1280 x 960 (960p)''')
+GOPRO_RESOLUTION_1080p = 3 # 1920 x 1080 (1080p)
+enums['GOPRO_RESOLUTION'][3] = EnumEntry('GOPRO_RESOLUTION_1080p', '''1920 x 1080 (1080p)''')
+GOPRO_RESOLUTION_1440p = 4 # 1920 x 1440 (1440p)
+enums['GOPRO_RESOLUTION'][4] = EnumEntry('GOPRO_RESOLUTION_1440p', '''1920 x 1440 (1440p)''')
+GOPRO_RESOLUTION_2_7k_17_9 = 5 # 2704 x 1440 (2.7k-17:9)
+enums['GOPRO_RESOLUTION'][5] = EnumEntry('GOPRO_RESOLUTION_2_7k_17_9', '''2704 x 1440 (2.7k-17:9)''')
+GOPRO_RESOLUTION_2_7k_16_9 = 6 # 2704 x 1524 (2.7k-16:9)
+enums['GOPRO_RESOLUTION'][6] = EnumEntry('GOPRO_RESOLUTION_2_7k_16_9', '''2704 x 1524 (2.7k-16:9)''')
+GOPRO_RESOLUTION_2_7k_4_3 = 7 # 2704 x 2028 (2.7k-4:3)
+enums['GOPRO_RESOLUTION'][7] = EnumEntry('GOPRO_RESOLUTION_2_7k_4_3', '''2704 x 2028 (2.7k-4:3)''')
+GOPRO_RESOLUTION_4k_16_9 = 8 # 3840 x 2160 (4k-16:9)
+enums['GOPRO_RESOLUTION'][8] = EnumEntry('GOPRO_RESOLUTION_4k_16_9', '''3840 x 2160 (4k-16:9)''')
+GOPRO_RESOLUTION_4k_17_9 = 9 # 4096 x 2160 (4k-17:9)
+enums['GOPRO_RESOLUTION'][9] = EnumEntry('GOPRO_RESOLUTION_4k_17_9', '''4096 x 2160 (4k-17:9)''')
+GOPRO_RESOLUTION_720p_SUPERVIEW = 10 # 1280 x 720 (720p-SuperView)
+enums['GOPRO_RESOLUTION'][10] = EnumEntry('GOPRO_RESOLUTION_720p_SUPERVIEW', '''1280 x 720 (720p-SuperView)''')
+GOPRO_RESOLUTION_1080p_SUPERVIEW = 11 # 1920 x 1080 (1080p-SuperView)
+enums['GOPRO_RESOLUTION'][11] = EnumEntry('GOPRO_RESOLUTION_1080p_SUPERVIEW', '''1920 x 1080 (1080p-SuperView)''')
+GOPRO_RESOLUTION_2_7k_SUPERVIEW = 12 # 2704 x 1520 (2.7k-SuperView)
+enums['GOPRO_RESOLUTION'][12] = EnumEntry('GOPRO_RESOLUTION_2_7k_SUPERVIEW', '''2704 x 1520 (2.7k-SuperView)''')
+GOPRO_RESOLUTION_4k_SUPERVIEW = 13 # 3840 x 2160 (4k-SuperView)
+enums['GOPRO_RESOLUTION'][13] = EnumEntry('GOPRO_RESOLUTION_4k_SUPERVIEW', '''3840 x 2160 (4k-SuperView)''')
+GOPRO_RESOLUTION_ENUM_END = 14 #
+enums['GOPRO_RESOLUTION'][14] = EnumEntry('GOPRO_RESOLUTION_ENUM_END', '''''')
+
+# GOPRO_FRAME_RATE
+enums['GOPRO_FRAME_RATE'] = {}
+GOPRO_FRAME_RATE_12 = 0 # 12 FPS
+enums['GOPRO_FRAME_RATE'][0] = EnumEntry('GOPRO_FRAME_RATE_12', '''12 FPS''')
+GOPRO_FRAME_RATE_15 = 1 # 15 FPS
+enums['GOPRO_FRAME_RATE'][1] = EnumEntry('GOPRO_FRAME_RATE_15', '''15 FPS''')
+GOPRO_FRAME_RATE_24 = 2 # 24 FPS
+enums['GOPRO_FRAME_RATE'][2] = EnumEntry('GOPRO_FRAME_RATE_24', '''24 FPS''')
+GOPRO_FRAME_RATE_25 = 3 # 25 FPS
+enums['GOPRO_FRAME_RATE'][3] = EnumEntry('GOPRO_FRAME_RATE_25', '''25 FPS''')
+GOPRO_FRAME_RATE_30 = 4 # 30 FPS
+enums['GOPRO_FRAME_RATE'][4] = EnumEntry('GOPRO_FRAME_RATE_30', '''30 FPS''')
+GOPRO_FRAME_RATE_48 = 5 # 48 FPS
+enums['GOPRO_FRAME_RATE'][5] = EnumEntry('GOPRO_FRAME_RATE_48', '''48 FPS''')
+GOPRO_FRAME_RATE_50 = 6 # 50 FPS
+enums['GOPRO_FRAME_RATE'][6] = EnumEntry('GOPRO_FRAME_RATE_50', '''50 FPS''')
+GOPRO_FRAME_RATE_60 = 7 # 60 FPS
+enums['GOPRO_FRAME_RATE'][7] = EnumEntry('GOPRO_FRAME_RATE_60', '''60 FPS''')
+GOPRO_FRAME_RATE_80 = 8 # 80 FPS
+enums['GOPRO_FRAME_RATE'][8] = EnumEntry('GOPRO_FRAME_RATE_80', '''80 FPS''')
+GOPRO_FRAME_RATE_90 = 9 # 90 FPS
+enums['GOPRO_FRAME_RATE'][9] = EnumEntry('GOPRO_FRAME_RATE_90', '''90 FPS''')
+GOPRO_FRAME_RATE_100 = 10 # 100 FPS
+enums['GOPRO_FRAME_RATE'][10] = EnumEntry('GOPRO_FRAME_RATE_100', '''100 FPS''')
+GOPRO_FRAME_RATE_120 = 11 # 120 FPS
+enums['GOPRO_FRAME_RATE'][11] = EnumEntry('GOPRO_FRAME_RATE_120', '''120 FPS''')
+GOPRO_FRAME_RATE_240 = 12 # 240 FPS
+enums['GOPRO_FRAME_RATE'][12] = EnumEntry('GOPRO_FRAME_RATE_240', '''240 FPS''')
+GOPRO_FRAME_RATE_12_5 = 13 # 12.5 FPS
+enums['GOPRO_FRAME_RATE'][13] = EnumEntry('GOPRO_FRAME_RATE_12_5', '''12.5 FPS''')
+GOPRO_FRAME_RATE_ENUM_END = 14 #
+enums['GOPRO_FRAME_RATE'][14] = EnumEntry('GOPRO_FRAME_RATE_ENUM_END', '''''')
+
+# GOPRO_FIELD_OF_VIEW
+enums['GOPRO_FIELD_OF_VIEW'] = {}
+GOPRO_FIELD_OF_VIEW_WIDE = 0 # 0x00: Wide
+enums['GOPRO_FIELD_OF_VIEW'][0] = EnumEntry('GOPRO_FIELD_OF_VIEW_WIDE', '''0x00: Wide''')
+GOPRO_FIELD_OF_VIEW_MEDIUM = 1 # 0x01: Medium
+enums['GOPRO_FIELD_OF_VIEW'][1] = EnumEntry('GOPRO_FIELD_OF_VIEW_MEDIUM', '''0x01: Medium''')
+GOPRO_FIELD_OF_VIEW_NARROW = 2 # 0x02: Narrow
+enums['GOPRO_FIELD_OF_VIEW'][2] = EnumEntry('GOPRO_FIELD_OF_VIEW_NARROW', '''0x02: Narrow''')
+GOPRO_FIELD_OF_VIEW_ENUM_END = 3 #
+enums['GOPRO_FIELD_OF_VIEW'][3] = EnumEntry('GOPRO_FIELD_OF_VIEW_ENUM_END', '''''')
+
+# GOPRO_VIDEO_SETTINGS_FLAGS
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'] = {}
+GOPRO_VIDEO_SETTINGS_TV_MODE = 1 # 0=NTSC, 1=PAL
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'][1] = EnumEntry('GOPRO_VIDEO_SETTINGS_TV_MODE', '''0=NTSC, 1=PAL''')
+GOPRO_VIDEO_SETTINGS_FLAGS_ENUM_END = 2 #
+enums['GOPRO_VIDEO_SETTINGS_FLAGS'][2] = EnumEntry('GOPRO_VIDEO_SETTINGS_FLAGS_ENUM_END', '''''')
+
+# GOPRO_PHOTO_RESOLUTION
+enums['GOPRO_PHOTO_RESOLUTION'] = {}
+GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM = 0 # 5MP Medium
+enums['GOPRO_PHOTO_RESOLUTION'][0] = EnumEntry('GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM', '''5MP Medium''')
+GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM = 1 # 7MP Medium
+enums['GOPRO_PHOTO_RESOLUTION'][1] = EnumEntry('GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM', '''7MP Medium''')
+GOPRO_PHOTO_RESOLUTION_7MP_WIDE = 2 # 7MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][2] = EnumEntry('GOPRO_PHOTO_RESOLUTION_7MP_WIDE', '''7MP Wide''')
+GOPRO_PHOTO_RESOLUTION_10MP_WIDE = 3 # 10MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][3] = EnumEntry('GOPRO_PHOTO_RESOLUTION_10MP_WIDE', '''10MP Wide''')
+GOPRO_PHOTO_RESOLUTION_12MP_WIDE = 4 # 12MP Wide
+enums['GOPRO_PHOTO_RESOLUTION'][4] = EnumEntry('GOPRO_PHOTO_RESOLUTION_12MP_WIDE', '''12MP Wide''')
+GOPRO_PHOTO_RESOLUTION_ENUM_END = 5 #
+enums['GOPRO_PHOTO_RESOLUTION'][5] = EnumEntry('GOPRO_PHOTO_RESOLUTION_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_WHITE_BALANCE
+enums['GOPRO_PROTUNE_WHITE_BALANCE'] = {}
+GOPRO_PROTUNE_WHITE_BALANCE_AUTO = 0 # Auto
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][0] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_AUTO', '''Auto''')
+GOPRO_PROTUNE_WHITE_BALANCE_3000K = 1 # 3000K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][1] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_3000K', '''3000K''')
+GOPRO_PROTUNE_WHITE_BALANCE_5500K = 2 # 5500K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][2] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_5500K', '''5500K''')
+GOPRO_PROTUNE_WHITE_BALANCE_6500K = 3 # 6500K
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][3] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_6500K', '''6500K''')
+GOPRO_PROTUNE_WHITE_BALANCE_RAW = 4 # Camera Raw
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][4] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_RAW', '''Camera Raw''')
+GOPRO_PROTUNE_WHITE_BALANCE_ENUM_END = 5 #
+enums['GOPRO_PROTUNE_WHITE_BALANCE'][5] = EnumEntry('GOPRO_PROTUNE_WHITE_BALANCE_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_COLOUR
+enums['GOPRO_PROTUNE_COLOUR'] = {}
+GOPRO_PROTUNE_COLOUR_STANDARD = 0 # Auto
+enums['GOPRO_PROTUNE_COLOUR'][0] = EnumEntry('GOPRO_PROTUNE_COLOUR_STANDARD', '''Auto''')
+GOPRO_PROTUNE_COLOUR_NEUTRAL = 1 # Neutral
+enums['GOPRO_PROTUNE_COLOUR'][1] = EnumEntry('GOPRO_PROTUNE_COLOUR_NEUTRAL', '''Neutral''')
+GOPRO_PROTUNE_COLOUR_ENUM_END = 2 #
+enums['GOPRO_PROTUNE_COLOUR'][2] = EnumEntry('GOPRO_PROTUNE_COLOUR_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_GAIN
+enums['GOPRO_PROTUNE_GAIN'] = {}
+GOPRO_PROTUNE_GAIN_400 = 0 # ISO 400
+enums['GOPRO_PROTUNE_GAIN'][0] = EnumEntry('GOPRO_PROTUNE_GAIN_400', '''ISO 400''')
+GOPRO_PROTUNE_GAIN_800 = 1 # ISO 800 (Only Hero 4)
+enums['GOPRO_PROTUNE_GAIN'][1] = EnumEntry('GOPRO_PROTUNE_GAIN_800', '''ISO 800 (Only Hero 4)''')
+GOPRO_PROTUNE_GAIN_1600 = 2 # ISO 1600
+enums['GOPRO_PROTUNE_GAIN'][2] = EnumEntry('GOPRO_PROTUNE_GAIN_1600', '''ISO 1600''')
+GOPRO_PROTUNE_GAIN_3200 = 3 # ISO 3200 (Only Hero 4)
+enums['GOPRO_PROTUNE_GAIN'][3] = EnumEntry('GOPRO_PROTUNE_GAIN_3200', '''ISO 3200 (Only Hero 4)''')
+GOPRO_PROTUNE_GAIN_6400 = 4 # ISO 6400
+enums['GOPRO_PROTUNE_GAIN'][4] = EnumEntry('GOPRO_PROTUNE_GAIN_6400', '''ISO 6400''')
+GOPRO_PROTUNE_GAIN_ENUM_END = 5 #
+enums['GOPRO_PROTUNE_GAIN'][5] = EnumEntry('GOPRO_PROTUNE_GAIN_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_SHARPNESS
+enums['GOPRO_PROTUNE_SHARPNESS'] = {}
+GOPRO_PROTUNE_SHARPNESS_LOW = 0 # Low Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][0] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_LOW', '''Low Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_MEDIUM = 1 # Medium Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][1] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_MEDIUM', '''Medium Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_HIGH = 2 # High Sharpness
+enums['GOPRO_PROTUNE_SHARPNESS'][2] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_HIGH', '''High Sharpness''')
+GOPRO_PROTUNE_SHARPNESS_ENUM_END = 3 #
+enums['GOPRO_PROTUNE_SHARPNESS'][3] = EnumEntry('GOPRO_PROTUNE_SHARPNESS_ENUM_END', '''''')
+
+# GOPRO_PROTUNE_EXPOSURE
+enums['GOPRO_PROTUNE_EXPOSURE'] = {}
+GOPRO_PROTUNE_EXPOSURE_NEG_5_0 = 0 # -5.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][0] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_5_0', '''-5.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_4_5 = 1 # -4.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][1] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_4_5', '''-4.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_4_0 = 2 # -4.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][2] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_4_0', '''-4.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_3_5 = 3 # -3.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][3] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_3_5', '''-3.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_3_0 = 4 # -3.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][4] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_3_0', '''-3.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_2_5 = 5 # -2.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][5] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_2_5', '''-2.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_NEG_2_0 = 6 # -2.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][6] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_2_0', '''-2.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_1_5 = 7 # -1.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][7] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_1_5', '''-1.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_1_0 = 8 # -1.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][8] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_1_0', '''-1.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_NEG_0_5 = 9 # -0.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][9] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_NEG_0_5', '''-0.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_ZERO = 10 # 0.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][10] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_ZERO', '''0.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_0_5 = 11 # +0.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][11] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_0_5', '''+0.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_1_0 = 12 # +1.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][12] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_1_0', '''+1.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_1_5 = 13 # +1.5 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][13] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_1_5', '''+1.5 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_2_0 = 14 # +2.0 EV
+enums['GOPRO_PROTUNE_EXPOSURE'][14] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_2_0', '''+2.0 EV''')
+GOPRO_PROTUNE_EXPOSURE_POS_2_5 = 15 # +2.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][15] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_2_5', '''+2.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_3_0 = 16 # +3.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][16] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_3_0', '''+3.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_3_5 = 17 # +3.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][17] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_3_5', '''+3.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_4_0 = 18 # +4.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][18] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_4_0', '''+4.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_4_5 = 19 # +4.5 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][19] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_4_5', '''+4.5 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_POS_5_0 = 20 # +5.0 EV (Hero 3+ Only)
+enums['GOPRO_PROTUNE_EXPOSURE'][20] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_POS_5_0', '''+5.0 EV (Hero 3+ Only)''')
+GOPRO_PROTUNE_EXPOSURE_ENUM_END = 21 #
+enums['GOPRO_PROTUNE_EXPOSURE'][21] = EnumEntry('GOPRO_PROTUNE_EXPOSURE_ENUM_END', '''''')
+
+# GOPRO_CHARGING
+enums['GOPRO_CHARGING'] = {}
+GOPRO_CHARGING_DISABLED = 0 # Charging disabled
+enums['GOPRO_CHARGING'][0] = EnumEntry('GOPRO_CHARGING_DISABLED', '''Charging disabled''')
+GOPRO_CHARGING_ENABLED = 1 # Charging enabled
+enums['GOPRO_CHARGING'][1] = EnumEntry('GOPRO_CHARGING_ENABLED', '''Charging enabled''')
+GOPRO_CHARGING_ENUM_END = 2 #
+enums['GOPRO_CHARGING'][2] = EnumEntry('GOPRO_CHARGING_ENUM_END', '''''')
+
+# GOPRO_MODEL
+enums['GOPRO_MODEL'] = {}
+GOPRO_MODEL_UNKNOWN = 0 # Unknown gopro model
+enums['GOPRO_MODEL'][0] = EnumEntry('GOPRO_MODEL_UNKNOWN', '''Unknown gopro model''')
+GOPRO_MODEL_HERO_3_PLUS_SILVER = 1 # Hero 3+ Silver (HeroBus not supported by GoPro)
+enums['GOPRO_MODEL'][1] = EnumEntry('GOPRO_MODEL_HERO_3_PLUS_SILVER', '''Hero 3+ Silver (HeroBus not supported by GoPro)''')
+GOPRO_MODEL_HERO_3_PLUS_BLACK = 2 # Hero 3+ Black
+enums['GOPRO_MODEL'][2] = EnumEntry('GOPRO_MODEL_HERO_3_PLUS_BLACK', '''Hero 3+ Black''')
+GOPRO_MODEL_HERO_4_SILVER = 3 # Hero 4 Silver
+enums['GOPRO_MODEL'][3] = EnumEntry('GOPRO_MODEL_HERO_4_SILVER', '''Hero 4 Silver''')
+GOPRO_MODEL_HERO_4_BLACK = 4 # Hero 4 Black
+enums['GOPRO_MODEL'][4] = EnumEntry('GOPRO_MODEL_HERO_4_BLACK', '''Hero 4 Black''')
+GOPRO_MODEL_ENUM_END = 5 #
+enums['GOPRO_MODEL'][5] = EnumEntry('GOPRO_MODEL_ENUM_END', '''''')
+
+# GOPRO_BURST_RATE
+enums['GOPRO_BURST_RATE'] = {}
+GOPRO_BURST_RATE_3_IN_1_SECOND = 0 # 3 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][0] = EnumEntry('GOPRO_BURST_RATE_3_IN_1_SECOND', '''3 Shots / 1 Second''')
+GOPRO_BURST_RATE_5_IN_1_SECOND = 1 # 5 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][1] = EnumEntry('GOPRO_BURST_RATE_5_IN_1_SECOND', '''5 Shots / 1 Second''')
+GOPRO_BURST_RATE_10_IN_1_SECOND = 2 # 10 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][2] = EnumEntry('GOPRO_BURST_RATE_10_IN_1_SECOND', '''10 Shots / 1 Second''')
+GOPRO_BURST_RATE_10_IN_2_SECOND = 3 # 10 Shots / 2 Second
+enums['GOPRO_BURST_RATE'][3] = EnumEntry('GOPRO_BURST_RATE_10_IN_2_SECOND', '''10 Shots / 2 Second''')
+GOPRO_BURST_RATE_10_IN_3_SECOND = 4 # 10 Shots / 3 Second (Hero 4 Only)
+enums['GOPRO_BURST_RATE'][4] = EnumEntry('GOPRO_BURST_RATE_10_IN_3_SECOND', '''10 Shots / 3 Second (Hero 4 Only)''')
+GOPRO_BURST_RATE_30_IN_1_SECOND = 5 # 30 Shots / 1 Second
+enums['GOPRO_BURST_RATE'][5] = EnumEntry('GOPRO_BURST_RATE_30_IN_1_SECOND', '''30 Shots / 1 Second''')
+GOPRO_BURST_RATE_30_IN_2_SECOND = 6 # 30 Shots / 2 Second
+enums['GOPRO_BURST_RATE'][6] = EnumEntry('GOPRO_BURST_RATE_30_IN_2_SECOND', '''30 Shots / 2 Second''')
+GOPRO_BURST_RATE_30_IN_3_SECOND = 7 # 30 Shots / 3 Second
+enums['GOPRO_BURST_RATE'][7] = EnumEntry('GOPRO_BURST_RATE_30_IN_3_SECOND', '''30 Shots / 3 Second''')
+GOPRO_BURST_RATE_30_IN_6_SECOND = 8 # 30 Shots / 6 Second
+enums['GOPRO_BURST_RATE'][8] = EnumEntry('GOPRO_BURST_RATE_30_IN_6_SECOND', '''30 Shots / 6 Second''')
+GOPRO_BURST_RATE_ENUM_END = 9 #
+enums['GOPRO_BURST_RATE'][9] = EnumEntry('GOPRO_BURST_RATE_ENUM_END', '''''')
+
+# LED_CONTROL_PATTERN
+enums['LED_CONTROL_PATTERN'] = {}
+LED_CONTROL_PATTERN_OFF = 0 # LED patterns off (return control to regular vehicle control)
+enums['LED_CONTROL_PATTERN'][0] = EnumEntry('LED_CONTROL_PATTERN_OFF', '''LED patterns off (return control to regular vehicle control)''')
+LED_CONTROL_PATTERN_FIRMWAREUPDATE = 1 # LEDs show pattern during firmware update
+enums['LED_CONTROL_PATTERN'][1] = EnumEntry('LED_CONTROL_PATTERN_FIRMWAREUPDATE', '''LEDs show pattern during firmware update''')
+LED_CONTROL_PATTERN_CUSTOM = 255 # Custom Pattern using custom bytes fields
+enums['LED_CONTROL_PATTERN'][255] = EnumEntry('LED_CONTROL_PATTERN_CUSTOM', '''Custom Pattern using custom bytes fields''')
+LED_CONTROL_PATTERN_ENUM_END = 256 #
+enums['LED_CONTROL_PATTERN'][256] = EnumEntry('LED_CONTROL_PATTERN_ENUM_END', '''''')
+
+# EKF_STATUS_FLAGS
+enums['EKF_STATUS_FLAGS'] = {}
+EKF_ATTITUDE = 1 # set if EKF's attitude estimate is good
+enums['EKF_STATUS_FLAGS'][1] = EnumEntry('EKF_ATTITUDE', '''set if EKF's attitude estimate is good''')
+EKF_VELOCITY_HORIZ = 2 # set if EKF's horizontal velocity estimate is good
+enums['EKF_STATUS_FLAGS'][2] = EnumEntry('EKF_VELOCITY_HORIZ', '''set if EKF's horizontal velocity estimate is good''')
+EKF_VELOCITY_VERT = 4 # set if EKF's vertical velocity estimate is good
+enums['EKF_STATUS_FLAGS'][4] = EnumEntry('EKF_VELOCITY_VERT', '''set if EKF's vertical velocity estimate is good''')
+EKF_POS_HORIZ_REL = 8 # set if EKF's horizontal position (relative) estimate is good
+enums['EKF_STATUS_FLAGS'][8] = EnumEntry('EKF_POS_HORIZ_REL', '''set if EKF's horizontal position (relative) estimate is good''')
+EKF_POS_HORIZ_ABS = 16 # set if EKF's horizontal position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][16] = EnumEntry('EKF_POS_HORIZ_ABS', '''set if EKF's horizontal position (absolute) estimate is good''')
+EKF_POS_VERT_ABS = 32 # set if EKF's vertical position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][32] = EnumEntry('EKF_POS_VERT_ABS', '''set if EKF's vertical position (absolute) estimate is good''')
+EKF_POS_VERT_AGL = 64 # set if EKF's vertical position (above ground) estimate is good
+enums['EKF_STATUS_FLAGS'][64] = EnumEntry('EKF_POS_VERT_AGL', '''set if EKF's vertical position (above ground) estimate is good''')
+EKF_CONST_POS_MODE = 128 # EKF is in constant position mode and does not know it's absolute or
+ # relative position
+enums['EKF_STATUS_FLAGS'][128] = EnumEntry('EKF_CONST_POS_MODE', '''EKF is in constant position mode and does not know it's absolute or relative position''')
+EKF_PRED_POS_HORIZ_REL = 256 # set if EKF's predicted horizontal position (relative) estimate is good
+enums['EKF_STATUS_FLAGS'][256] = EnumEntry('EKF_PRED_POS_HORIZ_REL', '''set if EKF's predicted horizontal position (relative) estimate is good''')
+EKF_PRED_POS_HORIZ_ABS = 512 # set if EKF's predicted horizontal position (absolute) estimate is good
+enums['EKF_STATUS_FLAGS'][512] = EnumEntry('EKF_PRED_POS_HORIZ_ABS', '''set if EKF's predicted horizontal position (absolute) estimate is good''')
+EKF_STATUS_FLAGS_ENUM_END = 513 #
+enums['EKF_STATUS_FLAGS'][513] = EnumEntry('EKF_STATUS_FLAGS_ENUM_END', '''''')
+
+# PID_TUNING_AXIS
+enums['PID_TUNING_AXIS'] = {}
+PID_TUNING_ROLL = 1 #
+enums['PID_TUNING_AXIS'][1] = EnumEntry('PID_TUNING_ROLL', '''''')
+PID_TUNING_PITCH = 2 #
+enums['PID_TUNING_AXIS'][2] = EnumEntry('PID_TUNING_PITCH', '''''')
+PID_TUNING_YAW = 3 #
+enums['PID_TUNING_AXIS'][3] = EnumEntry('PID_TUNING_YAW', '''''')
+PID_TUNING_ACCZ = 4 #
+enums['PID_TUNING_AXIS'][4] = EnumEntry('PID_TUNING_ACCZ', '''''')
+PID_TUNING_STEER = 5 #
+enums['PID_TUNING_AXIS'][5] = EnumEntry('PID_TUNING_STEER', '''''')
+PID_TUNING_AXIS_ENUM_END = 6 #
+enums['PID_TUNING_AXIS'][6] = EnumEntry('PID_TUNING_AXIS_ENUM_END', '''''')
+
+# MAG_CAL_STATUS
+enums['MAG_CAL_STATUS'] = {}
+MAG_CAL_NOT_STARTED = 0 #
+enums['MAG_CAL_STATUS'][0] = EnumEntry('MAG_CAL_NOT_STARTED', '''''')
+MAG_CAL_WAITING_TO_START = 1 #
+enums['MAG_CAL_STATUS'][1] = EnumEntry('MAG_CAL_WAITING_TO_START', '''''')
+MAG_CAL_RUNNING_STEP_ONE = 2 #
+enums['MAG_CAL_STATUS'][2] = EnumEntry('MAG_CAL_RUNNING_STEP_ONE', '''''')
+MAG_CAL_RUNNING_STEP_TWO = 3 #
+enums['MAG_CAL_STATUS'][3] = EnumEntry('MAG_CAL_RUNNING_STEP_TWO', '''''')
+MAG_CAL_SUCCESS = 4 #
+enums['MAG_CAL_STATUS'][4] = EnumEntry('MAG_CAL_SUCCESS', '''''')
+MAG_CAL_FAILED = 5 #
+enums['MAG_CAL_STATUS'][5] = EnumEntry('MAG_CAL_FAILED', '''''')
+MAG_CAL_STATUS_ENUM_END = 6 #
+enums['MAG_CAL_STATUS'][6] = EnumEntry('MAG_CAL_STATUS_ENUM_END', '''''')
+
+# MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'] = {}
+MAV_REMOTE_LOG_DATA_BLOCK_STOP = 2147483645 # UAV to stop sending DataFlash blocks
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483645] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_STOP', '''UAV to stop sending DataFlash blocks''')
+MAV_REMOTE_LOG_DATA_BLOCK_START = 2147483646 # UAV to start sending DataFlash blocks
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483646] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_START', '''UAV to start sending DataFlash blocks''')
+MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS_ENUM_END = 2147483647 #
+enums['MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS'][2147483647] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_COMMANDS_ENUM_END', '''''')
+
+# MAV_REMOTE_LOG_DATA_BLOCK_STATUSES
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'] = {}
+MAV_REMOTE_LOG_DATA_BLOCK_NACK = 0 # This block has NOT been received
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][0] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_NACK', '''This block has NOT been received''')
+MAV_REMOTE_LOG_DATA_BLOCK_ACK = 1 # This block has been received
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][1] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_ACK', '''This block has been received''')
+MAV_REMOTE_LOG_DATA_BLOCK_STATUSES_ENUM_END = 2 #
+enums['MAV_REMOTE_LOG_DATA_BLOCK_STATUSES'][2] = EnumEntry('MAV_REMOTE_LOG_DATA_BLOCK_STATUSES_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_DYNAMIC_STATE
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'] = {}
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][1] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][2] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][4] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][8] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][16] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ENUM_END = 17 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_STATE'][17] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_RF_SELECT
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'] = {}
+UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][0] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][1] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][2] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED', '''''')
+UAVIONIX_ADSB_OUT_RF_SELECT_ENUM_END = 3 #
+enums['UAVIONIX_ADSB_OUT_RF_SELECT'][3] = EnumEntry('UAVIONIX_ADSB_OUT_RF_SELECT_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'] = {}
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][0] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][1] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][2] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][3] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][4] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][5] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK', '''''')
+UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_ENUM_END = 6 #
+enums['UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX'][6] = EnumEntry('UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_RF_HEALTH
+enums['UAVIONIX_ADSB_RF_HEALTH'] = {}
+UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][0] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_INITIALIZING', '''''')
+UAVIONIX_ADSB_RF_HEALTH_OK = 1 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][1] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_OK', '''''')
+UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][2] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_FAIL_TX', '''''')
+UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][16] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_FAIL_RX', '''''')
+UAVIONIX_ADSB_RF_HEALTH_ENUM_END = 17 #
+enums['UAVIONIX_ADSB_RF_HEALTH'][17] = EnumEntry('UAVIONIX_ADSB_RF_HEALTH_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'] = {}
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][3] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][4] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][5] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][6] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][7] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][8] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][9] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][10] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][11] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][12] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][13] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][14] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][15] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M', '''''')
+UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_ENUM_END = 16 #
+enums['UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE'][16] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'] = {}
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][3] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][4] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][5] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][6] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][7] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_ENUM_END = 8 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT'][8] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'] = {}
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][0] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][1] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR', '''''')
+UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_ENUM_END = 2 #
+enums['UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON'][2] = EnumEntry('UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_ENUM_END', '''''')
+
+# UAVIONIX_ADSB_EMERGENCY_STATUS
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'] = {}
+UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][0] = EnumEntry('UAVIONIX_ADSB_OUT_NO_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][1] = EnumEntry('UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][2] = EnumEntry('UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][3] = EnumEntry('UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][4] = EnumEntry('UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][5] = EnumEntry('UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][6] = EnumEntry('UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY', '''''')
+UAVIONIX_ADSB_OUT_RESERVED = 7 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][7] = EnumEntry('UAVIONIX_ADSB_OUT_RESERVED', '''''')
+UAVIONIX_ADSB_EMERGENCY_STATUS_ENUM_END = 8 #
+enums['UAVIONIX_ADSB_EMERGENCY_STATUS'][8] = EnumEntry('UAVIONIX_ADSB_EMERGENCY_STATUS_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SENSOR_OFFSETS = 150
+MAVLINK_MSG_ID_SET_MAG_OFFSETS = 151
+MAVLINK_MSG_ID_MEMINFO = 152
+MAVLINK_MSG_ID_AP_ADC = 153
+MAVLINK_MSG_ID_DIGICAM_CONFIGURE = 154
+MAVLINK_MSG_ID_DIGICAM_CONTROL = 155
+MAVLINK_MSG_ID_MOUNT_CONFIGURE = 156
+MAVLINK_MSG_ID_MOUNT_CONTROL = 157
+MAVLINK_MSG_ID_MOUNT_STATUS = 158
+MAVLINK_MSG_ID_FENCE_POINT = 160
+MAVLINK_MSG_ID_FENCE_FETCH_POINT = 161
+MAVLINK_MSG_ID_FENCE_STATUS = 162
+MAVLINK_MSG_ID_AHRS = 163
+MAVLINK_MSG_ID_SIMSTATE = 164
+MAVLINK_MSG_ID_HWSTATUS = 165
+MAVLINK_MSG_ID_RADIO = 166
+MAVLINK_MSG_ID_LIMITS_STATUS = 167
+MAVLINK_MSG_ID_WIND = 168
+MAVLINK_MSG_ID_DATA16 = 169
+MAVLINK_MSG_ID_DATA32 = 170
+MAVLINK_MSG_ID_DATA64 = 171
+MAVLINK_MSG_ID_DATA96 = 172
+MAVLINK_MSG_ID_RANGEFINDER = 173
+MAVLINK_MSG_ID_AIRSPEED_AUTOCAL = 174
+MAVLINK_MSG_ID_RALLY_POINT = 175
+MAVLINK_MSG_ID_RALLY_FETCH_POINT = 176
+MAVLINK_MSG_ID_COMPASSMOT_STATUS = 177
+MAVLINK_MSG_ID_AHRS2 = 178
+MAVLINK_MSG_ID_CAMERA_STATUS = 179
+MAVLINK_MSG_ID_CAMERA_FEEDBACK = 180
+MAVLINK_MSG_ID_BATTERY2 = 181
+MAVLINK_MSG_ID_AHRS3 = 182
+MAVLINK_MSG_ID_AUTOPILOT_VERSION_REQUEST = 183
+MAVLINK_MSG_ID_REMOTE_LOG_DATA_BLOCK = 184
+MAVLINK_MSG_ID_REMOTE_LOG_BLOCK_STATUS = 185
+MAVLINK_MSG_ID_LED_CONTROL = 186
+MAVLINK_MSG_ID_MAG_CAL_PROGRESS = 191
+MAVLINK_MSG_ID_MAG_CAL_REPORT = 192
+MAVLINK_MSG_ID_EKF_STATUS_REPORT = 193
+MAVLINK_MSG_ID_PID_TUNING = 194
+MAVLINK_MSG_ID_GIMBAL_REPORT = 200
+MAVLINK_MSG_ID_GIMBAL_CONTROL = 201
+MAVLINK_MSG_ID_GIMBAL_TORQUE_CMD_REPORT = 214
+MAVLINK_MSG_ID_GOPRO_HEARTBEAT = 215
+MAVLINK_MSG_ID_GOPRO_GET_REQUEST = 216
+MAVLINK_MSG_ID_GOPRO_GET_RESPONSE = 217
+MAVLINK_MSG_ID_GOPRO_SET_REQUEST = 218
+MAVLINK_MSG_ID_GOPRO_SET_RESPONSE = 219
+MAVLINK_MSG_ID_RPM = 226
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+MAVLINK_MSG_ID_UAVIONIX_ADSB_OUT_CFG = 10001
+MAVLINK_MSG_ID_UAVIONIX_ADSB_OUT_DYNAMIC = 10002
+MAVLINK_MSG_ID_UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT = 10003
+
+class MAVLink_sensor_offsets_message(MAVLink_message):
+ '''
+ Offsets and calibrations values for hardware sensors. This
+ makes it easier to debug the calibration process.
+ '''
+ id = MAVLINK_MSG_ID_SENSOR_OFFSETS
+ name = 'SENSOR_OFFSETS'
+ fieldnames = ['mag_ofs_x', 'mag_ofs_y', 'mag_ofs_z', 'mag_declination', 'raw_press', 'raw_temp', 'gyro_cal_x', 'gyro_cal_y', 'gyro_cal_z', 'accel_cal_x', 'accel_cal_y', 'accel_cal_z']
+ ordered_fieldnames = [ 'mag_declination', 'raw_press', 'raw_temp', 'gyro_cal_x', 'gyro_cal_y', 'gyro_cal_z', 'accel_cal_x', 'accel_cal_y', 'accel_cal_z', 'mag_ofs_x', 'mag_ofs_y', 'mag_ofs_z' ]
+ format = ' MAV. Also
+ used to return a point from MAV -> GCS
+ '''
+ id = MAVLINK_MSG_ID_FENCE_POINT
+ name = 'FENCE_POINT'
+ fieldnames = ['target_system', 'target_component', 'idx', 'count', 'lat', 'lng']
+ ordered_fieldnames = [ 'lat', 'lng', 'target_system', 'target_component', 'idx', 'count' ]
+ format = ' MAV. Also
+ used to return a point from MAV -> GCS
+ '''
+ id = MAVLINK_MSG_ID_RALLY_POINT
+ name = 'RALLY_POINT'
+ fieldnames = ['target_system', 'target_component', 'idx', 'count', 'lat', 'lng', 'alt', 'break_alt', 'land_dir', 'flags']
+ ordered_fieldnames = [ 'lat', 'lng', 'alt', 'break_alt', 'land_dir', 'target_system', 'target_component', 'idx', 'count', 'flags' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack(' MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point (float)
+ lng : Longitude of point (float)
+
+ '''
+ return MAVLink_fence_point_message(target_system, target_component, idx, count, lat, lng)
+
+ def fence_point_send(self, target_system, target_component, idx, count, lat, lng, force_mavlink1=False):
+ '''
+ A fence point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point (float)
+ lng : Longitude of point (float)
+
+ '''
+ return self.send(self.fence_point_encode(target_system, target_component, idx, count, lat, lng), force_mavlink1=force_mavlink1)
+
+ def fence_fetch_point_encode(self, target_system, target_component, idx):
+ '''
+ Request a current fence point from MAV
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+
+ '''
+ return MAVLink_fence_fetch_point_message(target_system, target_component, idx)
+
+ def fence_fetch_point_send(self, target_system, target_component, idx, force_mavlink1=False):
+ '''
+ Request a current fence point from MAV
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 1, 0 is for return point) (uint8_t)
+
+ '''
+ return self.send(self.fence_fetch_point_encode(target_system, target_component, idx), force_mavlink1=force_mavlink1)
+
+ def fence_status_encode(self, breach_status, breach_count, breach_type, breach_time):
+ '''
+ Status of geo-fencing. Sent in extended status stream when fencing
+ enabled
+
+ breach_status : 0 if currently inside fence, 1 if outside (uint8_t)
+ breach_count : number of fence breaches (uint16_t)
+ breach_type : last breach type (see FENCE_BREACH_* enum) (uint8_t)
+ breach_time : time of last breach in milliseconds since boot (uint32_t)
+
+ '''
+ return MAVLink_fence_status_message(breach_status, breach_count, breach_type, breach_time)
+
+ def fence_status_send(self, breach_status, breach_count, breach_type, breach_time, force_mavlink1=False):
+ '''
+ Status of geo-fencing. Sent in extended status stream when fencing
+ enabled
+
+ breach_status : 0 if currently inside fence, 1 if outside (uint8_t)
+ breach_count : number of fence breaches (uint16_t)
+ breach_type : last breach type (see FENCE_BREACH_* enum) (uint8_t)
+ breach_time : time of last breach in milliseconds since boot (uint32_t)
+
+ '''
+ return self.send(self.fence_status_encode(breach_status, breach_count, breach_type, breach_time), force_mavlink1=force_mavlink1)
+
+ def ahrs_encode(self, omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw):
+ '''
+ Status of DCM attitude estimator
+
+ omegaIx : X gyro drift estimate rad/s (float)
+ omegaIy : Y gyro drift estimate rad/s (float)
+ omegaIz : Z gyro drift estimate rad/s (float)
+ accel_weight : average accel_weight (float)
+ renorm_val : average renormalisation value (float)
+ error_rp : average error_roll_pitch value (float)
+ error_yaw : average error_yaw value (float)
+
+ '''
+ return MAVLink_ahrs_message(omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw)
+
+ def ahrs_send(self, omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw, force_mavlink1=False):
+ '''
+ Status of DCM attitude estimator
+
+ omegaIx : X gyro drift estimate rad/s (float)
+ omegaIy : Y gyro drift estimate rad/s (float)
+ omegaIz : Z gyro drift estimate rad/s (float)
+ accel_weight : average accel_weight (float)
+ renorm_val : average renormalisation value (float)
+ error_rp : average error_roll_pitch value (float)
+ error_yaw : average error_yaw value (float)
+
+ '''
+ return self.send(self.ahrs_encode(omegaIx, omegaIy, omegaIz, accel_weight, renorm_val, error_rp, error_yaw), force_mavlink1=force_mavlink1)
+
+ def simstate_encode(self, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng):
+ '''
+ Status of simulation environment, if used
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return MAVLink_simstate_message(roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng)
+
+ def simstate_send(self, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return self.send(self.simstate_encode(roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lng), force_mavlink1=force_mavlink1)
+
+ def hwstatus_encode(self, Vcc, I2Cerr):
+ '''
+ Status of key hardware
+
+ Vcc : board voltage (mV) (uint16_t)
+ I2Cerr : I2C error count (uint8_t)
+
+ '''
+ return MAVLink_hwstatus_message(Vcc, I2Cerr)
+
+ def hwstatus_send(self, Vcc, I2Cerr, force_mavlink1=False):
+ '''
+ Status of key hardware
+
+ Vcc : board voltage (mV) (uint16_t)
+ I2Cerr : I2C error count (uint8_t)
+
+ '''
+ return self.send(self.hwstatus_encode(Vcc, I2Cerr), force_mavlink1=force_mavlink1)
+
+ def radio_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio
+
+ rssi : local signal strength (uint8_t)
+ remrssi : remote signal strength (uint8_t)
+ txbuf : how full the tx buffer is as a percentage (uint8_t)
+ noise : background noise level (uint8_t)
+ remnoise : remote background noise level (uint8_t)
+ rxerrors : receive errors (uint16_t)
+ fixed : count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio
+
+ rssi : local signal strength (uint8_t)
+ remrssi : remote signal strength (uint8_t)
+ txbuf : how full the tx buffer is as a percentage (uint8_t)
+ noise : background noise level (uint8_t)
+ remnoise : remote background noise level (uint8_t)
+ rxerrors : receive errors (uint16_t)
+ fixed : count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def limits_status_encode(self, limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered):
+ '''
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is
+ enabled
+
+ limits_state : state of AP_Limits, (see enum LimitState, LIMITS_STATE) (uint8_t)
+ last_trigger : time of last breach in milliseconds since boot (uint32_t)
+ last_action : time of last recovery action in milliseconds since boot (uint32_t)
+ last_recovery : time of last successful recovery in milliseconds since boot (uint32_t)
+ last_clear : time of last all-clear in milliseconds since boot (uint32_t)
+ breach_count : number of fence breaches (uint16_t)
+ mods_enabled : AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_required : AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_triggered : AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+
+ '''
+ return MAVLink_limits_status_message(limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered)
+
+ def limits_status_send(self, limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered, force_mavlink1=False):
+ '''
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is
+ enabled
+
+ limits_state : state of AP_Limits, (see enum LimitState, LIMITS_STATE) (uint8_t)
+ last_trigger : time of last breach in milliseconds since boot (uint32_t)
+ last_action : time of last recovery action in milliseconds since boot (uint32_t)
+ last_recovery : time of last successful recovery in milliseconds since boot (uint32_t)
+ last_clear : time of last all-clear in milliseconds since boot (uint32_t)
+ breach_count : number of fence breaches (uint16_t)
+ mods_enabled : AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_required : AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+ mods_triggered : AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE) (uint8_t)
+
+ '''
+ return self.send(self.limits_status_encode(limits_state, last_trigger, last_action, last_recovery, last_clear, breach_count, mods_enabled, mods_required, mods_triggered), force_mavlink1=force_mavlink1)
+
+ def wind_encode(self, direction, speed, speed_z):
+ '''
+ Wind estimation
+
+ direction : wind direction that wind is coming from (degrees) (float)
+ speed : wind speed in ground plane (m/s) (float)
+ speed_z : vertical wind speed (m/s) (float)
+
+ '''
+ return MAVLink_wind_message(direction, speed, speed_z)
+
+ def wind_send(self, direction, speed, speed_z, force_mavlink1=False):
+ '''
+ Wind estimation
+
+ direction : wind direction that wind is coming from (degrees) (float)
+ speed : wind speed in ground plane (m/s) (float)
+ speed_z : vertical wind speed (m/s) (float)
+
+ '''
+ return self.send(self.wind_encode(direction, speed, speed_z), force_mavlink1=force_mavlink1)
+
+ def data16_encode(self, type, len, data):
+ '''
+ Data packet, size 16
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data16_message(type, len, data)
+
+ def data16_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 16
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data16_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data32_encode(self, type, len, data):
+ '''
+ Data packet, size 32
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data32_message(type, len, data)
+
+ def data32_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 32
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data32_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data64_encode(self, type, len, data):
+ '''
+ Data packet, size 64
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data64_message(type, len, data)
+
+ def data64_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 64
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data64_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def data96_encode(self, type, len, data):
+ '''
+ Data packet, size 96
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return MAVLink_data96_message(type, len, data)
+
+ def data96_send(self, type, len, data, force_mavlink1=False):
+ '''
+ Data packet, size 96
+
+ type : data type (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (uint8_t)
+
+ '''
+ return self.send(self.data96_encode(type, len, data), force_mavlink1=force_mavlink1)
+
+ def rangefinder_encode(self, distance, voltage):
+ '''
+ Rangefinder reporting
+
+ distance : distance in meters (float)
+ voltage : raw voltage if available, zero otherwise (float)
+
+ '''
+ return MAVLink_rangefinder_message(distance, voltage)
+
+ def rangefinder_send(self, distance, voltage, force_mavlink1=False):
+ '''
+ Rangefinder reporting
+
+ distance : distance in meters (float)
+ voltage : raw voltage if available, zero otherwise (float)
+
+ '''
+ return self.send(self.rangefinder_encode(distance, voltage), force_mavlink1=force_mavlink1)
+
+ def airspeed_autocal_encode(self, vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz):
+ '''
+ Airspeed auto-calibration
+
+ vx : GPS velocity north m/s (float)
+ vy : GPS velocity east m/s (float)
+ vz : GPS velocity down m/s (float)
+ diff_pressure : Differential pressure pascals (float)
+ EAS2TAS : Estimated to true airspeed ratio (float)
+ ratio : Airspeed ratio (float)
+ state_x : EKF state x (float)
+ state_y : EKF state y (float)
+ state_z : EKF state z (float)
+ Pax : EKF Pax (float)
+ Pby : EKF Pby (float)
+ Pcz : EKF Pcz (float)
+
+ '''
+ return MAVLink_airspeed_autocal_message(vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz)
+
+ def airspeed_autocal_send(self, vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz, force_mavlink1=False):
+ '''
+ Airspeed auto-calibration
+
+ vx : GPS velocity north m/s (float)
+ vy : GPS velocity east m/s (float)
+ vz : GPS velocity down m/s (float)
+ diff_pressure : Differential pressure pascals (float)
+ EAS2TAS : Estimated to true airspeed ratio (float)
+ ratio : Airspeed ratio (float)
+ state_x : EKF state x (float)
+ state_y : EKF state y (float)
+ state_z : EKF state z (float)
+ Pax : EKF Pax (float)
+ Pby : EKF Pby (float)
+ Pcz : EKF Pcz (float)
+
+ '''
+ return self.send(self.airspeed_autocal_encode(vx, vy, vz, diff_pressure, EAS2TAS, ratio, state_x, state_y, state_z, Pax, Pby, Pcz), force_mavlink1=force_mavlink1)
+
+ def rally_point_encode(self, target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags):
+ '''
+ A rally point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point in degrees * 1E7 (int32_t)
+ lng : Longitude of point in degrees * 1E7 (int32_t)
+ alt : Transit / loiter altitude in meters relative to home (int16_t)
+ break_alt : Break altitude in meters relative to home (int16_t)
+ land_dir : Heading to aim for when landing. In centi-degrees. (uint16_t)
+ flags : See RALLY_FLAGS enum for definition of the bitmask. (uint8_t)
+
+ '''
+ return MAVLink_rally_point_message(target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags)
+
+ def rally_point_send(self, target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags, force_mavlink1=False):
+ '''
+ A rally point. Used to set a point when from GCS -> MAV. Also used to
+ return a point from MAV -> GCS
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+ count : total number of points (for sanity checking) (uint8_t)
+ lat : Latitude of point in degrees * 1E7 (int32_t)
+ lng : Longitude of point in degrees * 1E7 (int32_t)
+ alt : Transit / loiter altitude in meters relative to home (int16_t)
+ break_alt : Break altitude in meters relative to home (int16_t)
+ land_dir : Heading to aim for when landing. In centi-degrees. (uint16_t)
+ flags : See RALLY_FLAGS enum for definition of the bitmask. (uint8_t)
+
+ '''
+ return self.send(self.rally_point_encode(target_system, target_component, idx, count, lat, lng, alt, break_alt, land_dir, flags), force_mavlink1=force_mavlink1)
+
+ def rally_fetch_point_encode(self, target_system, target_component, idx):
+ '''
+ Request a current rally point from MAV. MAV should respond with a
+ RALLY_POINT message. MAV should not respond if the
+ request is invalid.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+
+ '''
+ return MAVLink_rally_fetch_point_message(target_system, target_component, idx)
+
+ def rally_fetch_point_send(self, target_system, target_component, idx, force_mavlink1=False):
+ '''
+ Request a current rally point from MAV. MAV should respond with a
+ RALLY_POINT message. MAV should not respond if the
+ request is invalid.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ idx : point index (first point is 0) (uint8_t)
+
+ '''
+ return self.send(self.rally_fetch_point_encode(target_system, target_component, idx), force_mavlink1=force_mavlink1)
+
+ def compassmot_status_encode(self, throttle, current, interference, CompensationX, CompensationY, CompensationZ):
+ '''
+ Status of compassmot calibration
+
+ throttle : throttle (percent*10) (uint16_t)
+ current : current (amps) (float)
+ interference : interference (percent) (uint16_t)
+ CompensationX : Motor Compensation X (float)
+ CompensationY : Motor Compensation Y (float)
+ CompensationZ : Motor Compensation Z (float)
+
+ '''
+ return MAVLink_compassmot_status_message(throttle, current, interference, CompensationX, CompensationY, CompensationZ)
+
+ def compassmot_status_send(self, throttle, current, interference, CompensationX, CompensationY, CompensationZ, force_mavlink1=False):
+ '''
+ Status of compassmot calibration
+
+ throttle : throttle (percent*10) (uint16_t)
+ current : current (amps) (float)
+ interference : interference (percent) (uint16_t)
+ CompensationX : Motor Compensation X (float)
+ CompensationY : Motor Compensation Y (float)
+ CompensationZ : Motor Compensation Z (float)
+
+ '''
+ return self.send(self.compassmot_status_encode(throttle, current, interference, CompensationX, CompensationY, CompensationZ), force_mavlink1=force_mavlink1)
+
+ def ahrs2_encode(self, roll, pitch, yaw, altitude, lat, lng):
+ '''
+ Status of secondary AHRS filter if available
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return MAVLink_ahrs2_message(roll, pitch, yaw, altitude, lat, lng)
+
+ def ahrs2_send(self, roll, pitch, yaw, altitude, lat, lng, force_mavlink1=False):
+ '''
+ Status of secondary AHRS filter if available
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+
+ '''
+ return self.send(self.ahrs2_encode(roll, pitch, yaw, altitude, lat, lng), force_mavlink1=force_mavlink1)
+
+ def camera_status_encode(self, time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4):
+ '''
+ Camera Event
+
+ time_usec : Image timestamp (microseconds since UNIX epoch, according to camera clock) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ event_id : See CAMERA_STATUS_TYPES enum for definition of the bitmask (uint8_t)
+ p1 : Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p2 : Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p3 : Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p4 : Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+
+ '''
+ return MAVLink_camera_status_message(time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4)
+
+ def camera_status_send(self, time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4, force_mavlink1=False):
+ '''
+ Camera Event
+
+ time_usec : Image timestamp (microseconds since UNIX epoch, according to camera clock) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ event_id : See CAMERA_STATUS_TYPES enum for definition of the bitmask (uint8_t)
+ p1 : Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p2 : Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p3 : Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+ p4 : Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum) (float)
+
+ '''
+ return self.send(self.camera_status_encode(time_usec, target_system, cam_idx, img_idx, event_id, p1, p2, p3, p4), force_mavlink1=force_mavlink1)
+
+ def camera_feedback_encode(self, time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags):
+ '''
+ Camera Capture Feedback
+
+ time_usec : Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ lat : Latitude in (deg * 1E7) (int32_t)
+ lng : Longitude in (deg * 1E7) (int32_t)
+ alt_msl : Altitude Absolute (meters AMSL) (float)
+ alt_rel : Altitude Relative (meters above HOME location) (float)
+ roll : Camera Roll angle (earth frame, degrees, +-180) (float)
+ pitch : Camera Pitch angle (earth frame, degrees, +-180) (float)
+ yaw : Camera Yaw (earth frame, degrees, 0-360, true) (float)
+ foc_len : Focal Length (mm) (float)
+ flags : See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask (uint8_t)
+
+ '''
+ return MAVLink_camera_feedback_message(time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags)
+
+ def camera_feedback_send(self, time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags, force_mavlink1=False):
+ '''
+ Camera Capture Feedback
+
+ time_usec : Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB) (uint64_t)
+ target_system : System ID (uint8_t)
+ cam_idx : Camera ID (uint8_t)
+ img_idx : Image index (uint16_t)
+ lat : Latitude in (deg * 1E7) (int32_t)
+ lng : Longitude in (deg * 1E7) (int32_t)
+ alt_msl : Altitude Absolute (meters AMSL) (float)
+ alt_rel : Altitude Relative (meters above HOME location) (float)
+ roll : Camera Roll angle (earth frame, degrees, +-180) (float)
+ pitch : Camera Pitch angle (earth frame, degrees, +-180) (float)
+ yaw : Camera Yaw (earth frame, degrees, 0-360, true) (float)
+ foc_len : Focal Length (mm) (float)
+ flags : See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask (uint8_t)
+
+ '''
+ return self.send(self.camera_feedback_encode(time_usec, target_system, cam_idx, img_idx, lat, lng, alt_msl, alt_rel, roll, pitch, yaw, foc_len, flags), force_mavlink1=force_mavlink1)
+
+ def battery2_encode(self, voltage, current_battery):
+ '''
+ 2nd Battery status
+
+ voltage : voltage in millivolts (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+
+ '''
+ return MAVLink_battery2_message(voltage, current_battery)
+
+ def battery2_send(self, voltage, current_battery, force_mavlink1=False):
+ '''
+ 2nd Battery status
+
+ voltage : voltage in millivolts (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+
+ '''
+ return self.send(self.battery2_encode(voltage, current_battery), force_mavlink1=force_mavlink1)
+
+ def ahrs3_encode(self, roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4):
+ '''
+ Status of third AHRS filter if available. This is for ANU research
+ group (Ali and Sean)
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+ v1 : test variable1 (float)
+ v2 : test variable2 (float)
+ v3 : test variable3 (float)
+ v4 : test variable4 (float)
+
+ '''
+ return MAVLink_ahrs3_message(roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4)
+
+ def ahrs3_send(self, roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4, force_mavlink1=False):
+ '''
+ Status of third AHRS filter if available. This is for ANU research
+ group (Ali and Sean)
+
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ altitude : Altitude (MSL) (float)
+ lat : Latitude in degrees * 1E7 (int32_t)
+ lng : Longitude in degrees * 1E7 (int32_t)
+ v1 : test variable1 (float)
+ v2 : test variable2 (float)
+ v3 : test variable3 (float)
+ v4 : test variable4 (float)
+
+ '''
+ return self.send(self.ahrs3_encode(roll, pitch, yaw, altitude, lat, lng, v1, v2, v3, v4), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_request_encode(self, target_system, target_component):
+ '''
+ Request the autopilot version from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_autopilot_version_request_message(target_system, target_component)
+
+ def autopilot_version_request_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the autopilot version from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.autopilot_version_request_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def remote_log_data_block_encode(self, target_system, target_component, seqno, data):
+ '''
+ Send a block of log data to remote location
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ data : log data block (uint8_t)
+
+ '''
+ return MAVLink_remote_log_data_block_message(target_system, target_component, seqno, data)
+
+ def remote_log_data_block_send(self, target_system, target_component, seqno, data, force_mavlink1=False):
+ '''
+ Send a block of log data to remote location
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ data : log data block (uint8_t)
+
+ '''
+ return self.send(self.remote_log_data_block_encode(target_system, target_component, seqno, data), force_mavlink1=force_mavlink1)
+
+ def remote_log_block_status_encode(self, target_system, target_component, seqno, status):
+ '''
+ Send Status of each log block that autopilot board might have sent
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ status : log data block status (uint8_t)
+
+ '''
+ return MAVLink_remote_log_block_status_message(target_system, target_component, seqno, status)
+
+ def remote_log_block_status_send(self, target_system, target_component, seqno, status, force_mavlink1=False):
+ '''
+ Send Status of each log block that autopilot board might have sent
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seqno : log data block sequence number (uint32_t)
+ status : log data block status (uint8_t)
+
+ '''
+ return self.send(self.remote_log_block_status_encode(target_system, target_component, seqno, status), force_mavlink1=force_mavlink1)
+
+ def led_control_encode(self, target_system, target_component, instance, pattern, custom_len, custom_bytes):
+ '''
+ Control vehicle LEDs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ instance : Instance (LED instance to control or 255 for all LEDs) (uint8_t)
+ pattern : Pattern (see LED_PATTERN_ENUM) (uint8_t)
+ custom_len : Custom Byte Length (uint8_t)
+ custom_bytes : Custom Bytes (uint8_t)
+
+ '''
+ return MAVLink_led_control_message(target_system, target_component, instance, pattern, custom_len, custom_bytes)
+
+ def led_control_send(self, target_system, target_component, instance, pattern, custom_len, custom_bytes, force_mavlink1=False):
+ '''
+ Control vehicle LEDs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ instance : Instance (LED instance to control or 255 for all LEDs) (uint8_t)
+ pattern : Pattern (see LED_PATTERN_ENUM) (uint8_t)
+ custom_len : Custom Byte Length (uint8_t)
+ custom_bytes : Custom Bytes (uint8_t)
+
+ '''
+ return self.send(self.led_control_encode(target_system, target_component, instance, pattern, custom_len, custom_bytes), force_mavlink1=force_mavlink1)
+
+ def mag_cal_progress_encode(self, compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z):
+ '''
+ Reports progress of compass calibration.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ attempt : Attempt number (uint8_t)
+ completion_pct : Completion percentage (uint8_t)
+ completion_mask : Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid) (uint8_t)
+ direction_x : Body frame direction vector for display (float)
+ direction_y : Body frame direction vector for display (float)
+ direction_z : Body frame direction vector for display (float)
+
+ '''
+ return MAVLink_mag_cal_progress_message(compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z)
+
+ def mag_cal_progress_send(self, compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z, force_mavlink1=False):
+ '''
+ Reports progress of compass calibration.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ attempt : Attempt number (uint8_t)
+ completion_pct : Completion percentage (uint8_t)
+ completion_mask : Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid) (uint8_t)
+ direction_x : Body frame direction vector for display (float)
+ direction_y : Body frame direction vector for display (float)
+ direction_z : Body frame direction vector for display (float)
+
+ '''
+ return self.send(self.mag_cal_progress_encode(compass_id, cal_mask, cal_status, attempt, completion_pct, completion_mask, direction_x, direction_y, direction_z), force_mavlink1=force_mavlink1)
+
+ def mag_cal_report_encode(self, compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z):
+ '''
+ Reports results of completed compass calibration. Sent until
+ MAG_CAL_ACK received.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ autosaved : 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters (uint8_t)
+ fitness : RMS milligauss residuals (float)
+ ofs_x : X offset (float)
+ ofs_y : Y offset (float)
+ ofs_z : Z offset (float)
+ diag_x : X diagonal (matrix 11) (float)
+ diag_y : Y diagonal (matrix 22) (float)
+ diag_z : Z diagonal (matrix 33) (float)
+ offdiag_x : X off-diagonal (matrix 12 and 21) (float)
+ offdiag_y : Y off-diagonal (matrix 13 and 31) (float)
+ offdiag_z : Z off-diagonal (matrix 32 and 23) (float)
+
+ '''
+ return MAVLink_mag_cal_report_message(compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z)
+
+ def mag_cal_report_send(self, compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z, force_mavlink1=False):
+ '''
+ Reports results of completed compass calibration. Sent until
+ MAG_CAL_ACK received.
+
+ compass_id : Compass being calibrated (uint8_t)
+ cal_mask : Bitmask of compasses being calibrated (uint8_t)
+ cal_status : Status (see MAG_CAL_STATUS enum) (uint8_t)
+ autosaved : 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters (uint8_t)
+ fitness : RMS milligauss residuals (float)
+ ofs_x : X offset (float)
+ ofs_y : Y offset (float)
+ ofs_z : Z offset (float)
+ diag_x : X diagonal (matrix 11) (float)
+ diag_y : Y diagonal (matrix 22) (float)
+ diag_z : Z diagonal (matrix 33) (float)
+ offdiag_x : X off-diagonal (matrix 12 and 21) (float)
+ offdiag_y : Y off-diagonal (matrix 13 and 31) (float)
+ offdiag_z : Z off-diagonal (matrix 32 and 23) (float)
+
+ '''
+ return self.send(self.mag_cal_report_encode(compass_id, cal_mask, cal_status, autosaved, fitness, ofs_x, ofs_y, ofs_z, diag_x, diag_y, diag_z, offdiag_x, offdiag_y, offdiag_z), force_mavlink1=force_mavlink1)
+
+ def ekf_status_report_encode(self, flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance):
+ '''
+ EKF Status message including flags and variances
+
+ flags : Flags (uint16_t)
+ velocity_variance : Velocity variance (float)
+ pos_horiz_variance : Horizontal Position variance (float)
+ pos_vert_variance : Vertical Position variance (float)
+ compass_variance : Compass variance (float)
+ terrain_alt_variance : Terrain Altitude variance (float)
+
+ '''
+ return MAVLink_ekf_status_report_message(flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance)
+
+ def ekf_status_report_send(self, flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance, force_mavlink1=False):
+ '''
+ EKF Status message including flags and variances
+
+ flags : Flags (uint16_t)
+ velocity_variance : Velocity variance (float)
+ pos_horiz_variance : Horizontal Position variance (float)
+ pos_vert_variance : Vertical Position variance (float)
+ compass_variance : Compass variance (float)
+ terrain_alt_variance : Terrain Altitude variance (float)
+
+ '''
+ return self.send(self.ekf_status_report_encode(flags, velocity_variance, pos_horiz_variance, pos_vert_variance, compass_variance, terrain_alt_variance), force_mavlink1=force_mavlink1)
+
+ def pid_tuning_encode(self, axis, desired, achieved, FF, P, I, D):
+ '''
+ PID tuning information
+
+ axis : axis (uint8_t)
+ desired : desired rate (degrees/s) (float)
+ achieved : achieved rate (degrees/s) (float)
+ FF : FF component (float)
+ P : P component (float)
+ I : I component (float)
+ D : D component (float)
+
+ '''
+ return MAVLink_pid_tuning_message(axis, desired, achieved, FF, P, I, D)
+
+ def pid_tuning_send(self, axis, desired, achieved, FF, P, I, D, force_mavlink1=False):
+ '''
+ PID tuning information
+
+ axis : axis (uint8_t)
+ desired : desired rate (degrees/s) (float)
+ achieved : achieved rate (degrees/s) (float)
+ FF : FF component (float)
+ P : P component (float)
+ I : I component (float)
+ D : D component (float)
+
+ '''
+ return self.send(self.pid_tuning_encode(axis, desired, achieved, FF, P, I, D), force_mavlink1=force_mavlink1)
+
+ def gimbal_report_encode(self, target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az):
+ '''
+ 3 axis gimbal mesuraments
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ delta_time : Time since last update (seconds) (float)
+ delta_angle_x : Delta angle X (radians) (float)
+ delta_angle_y : Delta angle Y (radians) (float)
+ delta_angle_z : Delta angle X (radians) (float)
+ delta_velocity_x : Delta velocity X (m/s) (float)
+ delta_velocity_y : Delta velocity Y (m/s) (float)
+ delta_velocity_z : Delta velocity Z (m/s) (float)
+ joint_roll : Joint ROLL (radians) (float)
+ joint_el : Joint EL (radians) (float)
+ joint_az : Joint AZ (radians) (float)
+
+ '''
+ return MAVLink_gimbal_report_message(target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az)
+
+ def gimbal_report_send(self, target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az, force_mavlink1=False):
+ '''
+ 3 axis gimbal mesuraments
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ delta_time : Time since last update (seconds) (float)
+ delta_angle_x : Delta angle X (radians) (float)
+ delta_angle_y : Delta angle Y (radians) (float)
+ delta_angle_z : Delta angle X (radians) (float)
+ delta_velocity_x : Delta velocity X (m/s) (float)
+ delta_velocity_y : Delta velocity Y (m/s) (float)
+ delta_velocity_z : Delta velocity Z (m/s) (float)
+ joint_roll : Joint ROLL (radians) (float)
+ joint_el : Joint EL (radians) (float)
+ joint_az : Joint AZ (radians) (float)
+
+ '''
+ return self.send(self.gimbal_report_encode(target_system, target_component, delta_time, delta_angle_x, delta_angle_y, delta_angle_z, delta_velocity_x, delta_velocity_y, delta_velocity_z, joint_roll, joint_el, joint_az), force_mavlink1=force_mavlink1)
+
+ def gimbal_control_encode(self, target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z):
+ '''
+ Control message for rate gimbal
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ demanded_rate_x : Demanded angular rate X (rad/s) (float)
+ demanded_rate_y : Demanded angular rate Y (rad/s) (float)
+ demanded_rate_z : Demanded angular rate Z (rad/s) (float)
+
+ '''
+ return MAVLink_gimbal_control_message(target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z)
+
+ def gimbal_control_send(self, target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z, force_mavlink1=False):
+ '''
+ Control message for rate gimbal
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ demanded_rate_x : Demanded angular rate X (rad/s) (float)
+ demanded_rate_y : Demanded angular rate Y (rad/s) (float)
+ demanded_rate_z : Demanded angular rate Z (rad/s) (float)
+
+ '''
+ return self.send(self.gimbal_control_encode(target_system, target_component, demanded_rate_x, demanded_rate_y, demanded_rate_z), force_mavlink1=force_mavlink1)
+
+ def gimbal_torque_cmd_report_encode(self, target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd):
+ '''
+ 100 Hz gimbal torque command telemetry
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ rl_torque_cmd : Roll Torque Command (int16_t)
+ el_torque_cmd : Elevation Torque Command (int16_t)
+ az_torque_cmd : Azimuth Torque Command (int16_t)
+
+ '''
+ return MAVLink_gimbal_torque_cmd_report_message(target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd)
+
+ def gimbal_torque_cmd_report_send(self, target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd, force_mavlink1=False):
+ '''
+ 100 Hz gimbal torque command telemetry
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ rl_torque_cmd : Roll Torque Command (int16_t)
+ el_torque_cmd : Elevation Torque Command (int16_t)
+ az_torque_cmd : Azimuth Torque Command (int16_t)
+
+ '''
+ return self.send(self.gimbal_torque_cmd_report_encode(target_system, target_component, rl_torque_cmd, el_torque_cmd, az_torque_cmd), force_mavlink1=force_mavlink1)
+
+ def gopro_heartbeat_encode(self, status, capture_mode, flags):
+ '''
+ Heartbeat from a HeroBus attached GoPro
+
+ status : Status (uint8_t)
+ capture_mode : Current capture mode (uint8_t)
+ flags : additional status bits (uint8_t)
+
+ '''
+ return MAVLink_gopro_heartbeat_message(status, capture_mode, flags)
+
+ def gopro_heartbeat_send(self, status, capture_mode, flags, force_mavlink1=False):
+ '''
+ Heartbeat from a HeroBus attached GoPro
+
+ status : Status (uint8_t)
+ capture_mode : Current capture mode (uint8_t)
+ flags : additional status bits (uint8_t)
+
+ '''
+ return self.send(self.gopro_heartbeat_encode(status, capture_mode, flags), force_mavlink1=force_mavlink1)
+
+ def gopro_get_request_encode(self, target_system, target_component, cmd_id):
+ '''
+ Request a GOPRO_COMMAND response from the GoPro
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+
+ '''
+ return MAVLink_gopro_get_request_message(target_system, target_component, cmd_id)
+
+ def gopro_get_request_send(self, target_system, target_component, cmd_id, force_mavlink1=False):
+ '''
+ Request a GOPRO_COMMAND response from the GoPro
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+
+ '''
+ return self.send(self.gopro_get_request_encode(target_system, target_component, cmd_id), force_mavlink1=force_mavlink1)
+
+ def gopro_get_response_encode(self, cmd_id, status, value):
+ '''
+ Response from a GOPRO_COMMAND get request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return MAVLink_gopro_get_response_message(cmd_id, status, value)
+
+ def gopro_get_response_send(self, cmd_id, status, value, force_mavlink1=False):
+ '''
+ Response from a GOPRO_COMMAND get request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return self.send(self.gopro_get_response_encode(cmd_id, status, value), force_mavlink1=force_mavlink1)
+
+ def gopro_set_request_encode(self, target_system, target_component, cmd_id, value):
+ '''
+ Request to set a GOPRO_COMMAND with a desired
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return MAVLink_gopro_set_request_message(target_system, target_component, cmd_id, value)
+
+ def gopro_set_request_send(self, target_system, target_component, cmd_id, value, force_mavlink1=False):
+ '''
+ Request to set a GOPRO_COMMAND with a desired
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ cmd_id : Command ID (uint8_t)
+ value : Value (uint8_t)
+
+ '''
+ return self.send(self.gopro_set_request_encode(target_system, target_component, cmd_id, value), force_mavlink1=force_mavlink1)
+
+ def gopro_set_response_encode(self, cmd_id, status):
+ '''
+ Response from a GOPRO_COMMAND set request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+
+ '''
+ return MAVLink_gopro_set_response_message(cmd_id, status)
+
+ def gopro_set_response_send(self, cmd_id, status, force_mavlink1=False):
+ '''
+ Response from a GOPRO_COMMAND set request
+
+ cmd_id : Command ID (uint8_t)
+ status : Status (uint8_t)
+
+ '''
+ return self.send(self.gopro_set_response_encode(cmd_id, status), force_mavlink1=force_mavlink1)
+
+ def rpm_encode(self, rpm1, rpm2):
+ '''
+ RPM sensor output
+
+ rpm1 : RPM Sensor1 (float)
+ rpm2 : RPM Sensor2 (float)
+
+ '''
+ return MAVLink_rpm_message(rpm1, rpm2)
+
+ def rpm_send(self, rpm1, rpm2, force_mavlink1=False):
+ '''
+ RPM sensor output
+
+ rpm1 : RPM Sensor1 (float)
+ rpm2 : RPM Sensor2 (float)
+
+ '''
+ return self.send(self.rpm_encode(rpm1, rpm2), force_mavlink1=force_mavlink1)
+
+ def heartbeat_encode(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return MAVLink_heartbeat_message(type, autopilot, base_mode, custom_mode, system_status, mavlink_version)
+
+ def heartbeat_send(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3, force_mavlink1=False):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return self.send(self.heartbeat_encode(type, autopilot, base_mode, custom_mode, system_status, mavlink_version), force_mavlink1=force_mavlink1)
+
+ def sys_status_encode(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return MAVLink_sys_status_message(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4)
+
+ def sys_status_send(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4, force_mavlink1=False):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return self.send(self.sys_status_encode(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4), force_mavlink1=force_mavlink1)
+
+ def system_time_encode(self, time_unix_usec, time_boot_ms):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return MAVLink_system_time_message(time_unix_usec, time_boot_ms)
+
+ def system_time_send(self, time_unix_usec, time_boot_ms, force_mavlink1=False):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return self.send(self.system_time_encode(time_unix_usec, time_boot_ms), force_mavlink1=force_mavlink1)
+
+ def ping_encode(self, time_usec, seq, target_system, target_component):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return MAVLink_ping_message(time_usec, seq, target_system, target_component)
+
+ def ping_send(self, time_usec, seq, target_system, target_component, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return self.send(self.ping_encode(time_usec, seq, target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_encode(self, target_system, control_request, version, passkey):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return MAVLink_change_operator_control_message(target_system, control_request, version, passkey)
+
+ def change_operator_control_send(self, target_system, control_request, version, passkey, force_mavlink1=False):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return self.send(self.change_operator_control_encode(target_system, control_request, version, passkey), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_ack_encode(self, gcs_system_id, control_request, ack):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return MAVLink_change_operator_control_ack_message(gcs_system_id, control_request, ack)
+
+ def change_operator_control_ack_send(self, gcs_system_id, control_request, ack, force_mavlink1=False):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return self.send(self.change_operator_control_ack_encode(gcs_system_id, control_request, ack), force_mavlink1=force_mavlink1)
+
+ def auth_key_encode(self, key):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return MAVLink_auth_key_message(key)
+
+ def auth_key_send(self, key, force_mavlink1=False):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return self.send(self.auth_key_encode(key), force_mavlink1=force_mavlink1)
+
+ def set_mode_encode(self, target_system, base_mode, custom_mode):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return MAVLink_set_mode_message(target_system, base_mode, custom_mode)
+
+ def set_mode_send(self, target_system, base_mode, custom_mode, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return self.send(self.set_mode_encode(target_system, base_mode, custom_mode), force_mavlink1=force_mavlink1)
+
+ def param_request_read_encode(self, target_system, target_component, param_id, param_index):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
+ def uavionix_adsb_out_cfg_encode(self, ICAO, callsign, emitterType, aircraftSize, gpsOffsetLat, gpsOffsetLon, stallSpeed, rfSelect):
+ '''
+ Static data to configure the ADS-B transponder (send within 10 sec of
+ a POR and every 10 sec thereafter)
+
+ ICAO : Vehicle address (24 bit) (uint32_t)
+ callsign : Vehicle identifier (8 characters, null terminated, valid characters are A-Z, 0-9, " " only) (char)
+ emitterType : Transmitting vehicle type. See ADSB_EMITTER_TYPE enum (uint8_t)
+ aircraftSize : Aircraft length and width encoding (table 2-35 of DO-282B) (uint8_t)
+ gpsOffsetLat : GPS antenna lateral offset (table 2-36 of DO-282B) (uint8_t)
+ gpsOffsetLon : GPS antenna longitudinal offset from nose [if non-zero, take position (in meters) divide by 2 and add one] (table 2-37 DO-282B) (uint8_t)
+ stallSpeed : Aircraft stall speed in cm/s (uint16_t)
+ rfSelect : ADS-B transponder reciever and transmit enable flags (uint8_t)
+
+ '''
+ return MAVLink_uavionix_adsb_out_cfg_message(ICAO, callsign, emitterType, aircraftSize, gpsOffsetLat, gpsOffsetLon, stallSpeed, rfSelect)
+
+ def uavionix_adsb_out_cfg_send(self, ICAO, callsign, emitterType, aircraftSize, gpsOffsetLat, gpsOffsetLon, stallSpeed, rfSelect, force_mavlink1=False):
+ '''
+ Static data to configure the ADS-B transponder (send within 10 sec of
+ a POR and every 10 sec thereafter)
+
+ ICAO : Vehicle address (24 bit) (uint32_t)
+ callsign : Vehicle identifier (8 characters, null terminated, valid characters are A-Z, 0-9, " " only) (char)
+ emitterType : Transmitting vehicle type. See ADSB_EMITTER_TYPE enum (uint8_t)
+ aircraftSize : Aircraft length and width encoding (table 2-35 of DO-282B) (uint8_t)
+ gpsOffsetLat : GPS antenna lateral offset (table 2-36 of DO-282B) (uint8_t)
+ gpsOffsetLon : GPS antenna longitudinal offset from nose [if non-zero, take position (in meters) divide by 2 and add one] (table 2-37 DO-282B) (uint8_t)
+ stallSpeed : Aircraft stall speed in cm/s (uint16_t)
+ rfSelect : ADS-B transponder reciever and transmit enable flags (uint8_t)
+
+ '''
+ return self.send(self.uavionix_adsb_out_cfg_encode(ICAO, callsign, emitterType, aircraftSize, gpsOffsetLat, gpsOffsetLon, stallSpeed, rfSelect), force_mavlink1=force_mavlink1)
+
+ def uavionix_adsb_out_dynamic_encode(self, utcTime, gpsLat, gpsLon, gpsAlt, gpsFix, numSats, baroAltMSL, accuracyHor, accuracyVert, accuracyVel, velVert, velNS, VelEW, emergencyStatus, state, squawk):
+ '''
+ Dynamic data used to generate ADS-B out transponder data (send at 5Hz)
+
+ utcTime : UTC time in seconds since GPS epoch (Jan 6, 1980). If unknown set to UINT32_MAX (uint32_t)
+ gpsLat : Latitude WGS84 (deg * 1E7). If unknown set to INT32_MAX (int32_t)
+ gpsLon : Longitude WGS84 (deg * 1E7). If unknown set to INT32_MAX (int32_t)
+ gpsAlt : Altitude in mm (m * 1E-3) UP +ve. WGS84 altitude. If unknown set to INT32_MAX (int32_t)
+ gpsFix : 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: DGPS, 5: RTK (uint8_t)
+ numSats : Number of satellites visible. If unknown set to UINT8_MAX (uint8_t)
+ baroAltMSL : Barometric pressure altitude relative to a standard atmosphere of 1013.2 mBar and NOT bar corrected altitude (m * 1E-3). (up +ve). If unknown set to INT32_MAX (int32_t)
+ accuracyHor : Horizontal accuracy in mm (m * 1E-3). If unknown set to UINT32_MAX (uint32_t)
+ accuracyVert : Vertical accuracy in cm. If unknown set to UINT16_MAX (uint16_t)
+ accuracyVel : Velocity accuracy in mm/s (m * 1E-3). If unknown set to UINT16_MAX (uint16_t)
+ velVert : GPS vertical speed in cm/s. If unknown set to INT16_MAX (int16_t)
+ velNS : North-South velocity over ground in cm/s North +ve. If unknown set to INT16_MAX (int16_t)
+ VelEW : East-West velocity over ground in cm/s East +ve. If unknown set to INT16_MAX (int16_t)
+ emergencyStatus : Emergency status (uint8_t)
+ state : ADS-B transponder dynamic input state flags (uint16_t)
+ squawk : Mode A code (typically 1200 [0x04B0] for VFR) (uint16_t)
+
+ '''
+ return MAVLink_uavionix_adsb_out_dynamic_message(utcTime, gpsLat, gpsLon, gpsAlt, gpsFix, numSats, baroAltMSL, accuracyHor, accuracyVert, accuracyVel, velVert, velNS, VelEW, emergencyStatus, state, squawk)
+
+ def uavionix_adsb_out_dynamic_send(self, utcTime, gpsLat, gpsLon, gpsAlt, gpsFix, numSats, baroAltMSL, accuracyHor, accuracyVert, accuracyVel, velVert, velNS, VelEW, emergencyStatus, state, squawk, force_mavlink1=False):
+ '''
+ Dynamic data used to generate ADS-B out transponder data (send at 5Hz)
+
+ utcTime : UTC time in seconds since GPS epoch (Jan 6, 1980). If unknown set to UINT32_MAX (uint32_t)
+ gpsLat : Latitude WGS84 (deg * 1E7). If unknown set to INT32_MAX (int32_t)
+ gpsLon : Longitude WGS84 (deg * 1E7). If unknown set to INT32_MAX (int32_t)
+ gpsAlt : Altitude in mm (m * 1E-3) UP +ve. WGS84 altitude. If unknown set to INT32_MAX (int32_t)
+ gpsFix : 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: DGPS, 5: RTK (uint8_t)
+ numSats : Number of satellites visible. If unknown set to UINT8_MAX (uint8_t)
+ baroAltMSL : Barometric pressure altitude relative to a standard atmosphere of 1013.2 mBar and NOT bar corrected altitude (m * 1E-3). (up +ve). If unknown set to INT32_MAX (int32_t)
+ accuracyHor : Horizontal accuracy in mm (m * 1E-3). If unknown set to UINT32_MAX (uint32_t)
+ accuracyVert : Vertical accuracy in cm. If unknown set to UINT16_MAX (uint16_t)
+ accuracyVel : Velocity accuracy in mm/s (m * 1E-3). If unknown set to UINT16_MAX (uint16_t)
+ velVert : GPS vertical speed in cm/s. If unknown set to INT16_MAX (int16_t)
+ velNS : North-South velocity over ground in cm/s North +ve. If unknown set to INT16_MAX (int16_t)
+ VelEW : East-West velocity over ground in cm/s East +ve. If unknown set to INT16_MAX (int16_t)
+ emergencyStatus : Emergency status (uint8_t)
+ state : ADS-B transponder dynamic input state flags (uint16_t)
+ squawk : Mode A code (typically 1200 [0x04B0] for VFR) (uint16_t)
+
+ '''
+ return self.send(self.uavionix_adsb_out_dynamic_encode(utcTime, gpsLat, gpsLon, gpsAlt, gpsFix, numSats, baroAltMSL, accuracyHor, accuracyVert, accuracyVel, velVert, velNS, VelEW, emergencyStatus, state, squawk), force_mavlink1=force_mavlink1)
+
+ def uavionix_adsb_transceiver_health_report_encode(self, rfHealth):
+ '''
+ Transceiver heartbeat with health report (updated every 10s)
+
+ rfHealth : ADS-B transponder messages (uint8_t)
+
+ '''
+ return MAVLink_uavionix_adsb_transceiver_health_report_message(rfHealth)
+
+ def uavionix_adsb_transceiver_health_report_send(self, rfHealth, force_mavlink1=False):
+ '''
+ Transceiver heartbeat with health report (updated every 10s)
+
+ rfHealth : ADS-B transponder messages (uint8_t)
+
+ '''
+ return self.send(self.uavionix_adsb_transceiver_health_report_encode(rfHealth), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.xml
new file mode 100644
index 000000000..21f66ae50
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ardupilotmega.xml
@@ -0,0 +1,1545 @@
+
+
+ common.xml
+
+
+ uAvionix.xml
+
+ 2
+
+
+
+
+
+ Mission command to operate EPM gripper
+ gripper number (a number from 1 to max number of grippers on the vehicle)
+ gripper action (0=release, 1=grab. See GRIPPER_ACTIONS enum)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Enable/disable autotune
+ enable (1: enable, 0:disable)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to wait for an altitude or downwards vertical speed. This is meant for high altitude balloon launches, allowing the aircraft to be idle until either an altitude is reached or a negative vertical speed is reached (indicating early balloon burst). The wiggle time is how often to wiggle the control surfaces to prevent them seizing up.
+ altitude (m)
+ descent speed (m/s)
+ Wiggle Time (s)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ A system wide power-off event has been initiated.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ FLY button has been clicked.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ FLY button has been held for 1.5 seconds.
+ Takeoff altitude
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ PAUSE button has been clicked.
+ 1 if Solo is in a shot mode, 0 otherwise
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Automatically retry on failure (0=no retry, 1=retry).
+ Save without user input (0=require input, 1=autosave).
+ Delay (seconds)
+ Autoreboot (0=user reboot, 1=autoreboot)
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Cancel a running magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reply with the version banner
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Causes the gimbal to reset and boot as if it was just powered on
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Command autopilot to get into factory test/diagnostic mode
+ 0 means get out of test mode, 1 means get into test mode
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reports progress and success or failure of gimbal axis calibration procedure
+ Gimbal axis we're reporting calibration progress for
+ Current calibration progress for this axis, 0x64=100%
+ Status of the calibration
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Starts commutation calibration on the gimbal
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Erases gimbal application and parameters
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+ a limit has been breached
+
+
+
+ taking action eg. RTL
+
+
+
+ we're no longer in breach of a limit
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+
+
+ Flags in RALLY_POINT message
+
+ Flag set when requiring favorable winds for landing.
+
+
+
+ Flag set when plane is to immediately descend to break altitude and land without GCS intervention. Flag not set when plane is to loiter at Rally point until commanded to land.
+
+
+
+
+
+
+ Disable parachute release
+
+
+
+ Enable parachute release
+
+
+
+ Release parachute
+
+
+
+
+
+ Gripper actions.
+
+ gripper release of cargo
+
+
+
+ gripper grabs onto cargo
+
+
+
+
+
+
+ Camera heartbeat, announce camera component ID at 1hz
+
+
+
+ Camera image triggered
+
+
+
+ Camera connection lost
+
+
+
+ Camera unknown error
+
+
+
+ Camera battery low. Parameter p1 shows reported voltage
+
+
+
+ Camera storage low. Parameter p1 shows reported shots remaining
+
+
+
+ Camera storage low. Parameter p1 shows reported video minutes remaining
+
+
+
+
+
+
+ Shooting photos, not video
+
+
+
+ Shooting video, not stills
+
+
+
+ Unable to achieve requested exposure (e.g. shutter speed too low)
+
+
+
+ Closed loop feedback from camera, we know for sure it has successfully taken a picture
+
+
+
+ Open loop camera, an image trigger has been requested but we can't know for sure it has successfully taken a picture
+
+
+
+
+
+
+ Gimbal is powered on but has not started initializing yet
+
+
+
+ Gimbal is currently running calibration on the pitch axis
+
+
+
+ Gimbal is currently running calibration on the roll axis
+
+
+
+ Gimbal is currently running calibration on the yaw axis
+
+
+
+ Gimbal has finished calibrating and initializing, but is relaxed pending reception of first rate command from copter
+
+
+
+ Gimbal is actively stabilizing
+
+
+
+ Gimbal is relaxed because it missed more than 10 expected rate command messages in a row. Gimbal will move back to active mode when it receives a new rate command
+
+
+
+
+
+ Gimbal yaw axis
+
+
+
+ Gimbal pitch axis
+
+
+
+ Gimbal roll axis
+
+
+
+
+
+ Axis calibration is in progress
+
+
+
+ Axis calibration succeeded
+
+
+
+ Axis calibration failed
+
+
+
+
+
+ Whether or not this axis requires calibration is unknown at this time
+
+
+
+ This axis requires calibration
+
+
+
+ This axis does not require calibration
+
+
+
+
+
+
+ No GoPro connected
+
+
+
+ The detected GoPro is not HeroBus compatible
+
+
+
+ A HeroBus compatible GoPro is connected
+
+
+
+ An unrecoverable error was encountered with the connected GoPro, it may require a power cycle
+
+
+
+
+
+
+ GoPro is currently recording
+
+
+
+
+
+ The write message with ID indicated succeeded
+
+
+
+ The write message with ID indicated failed
+
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (___/Set)
+
+
+
+ (Get/___)
+
+
+
+ (Get/___)
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+
+
+ Video mode
+
+
+
+ Photo mode
+
+
+
+ Burst mode, hero 3+ only
+
+
+
+ Time lapse mode, hero 3+ only
+
+
+
+ Multi shot mode, hero 4 only
+
+
+
+ Playback mode, hero 4 only, silver only except when LCD or HDMI is connected to black
+
+
+
+ Playback mode, hero 4 only
+
+
+
+ Mode not yet known
+
+
+
+
+
+ 848 x 480 (480p)
+
+
+
+ 1280 x 720 (720p)
+
+
+
+ 1280 x 960 (960p)
+
+
+
+ 1920 x 1080 (1080p)
+
+
+
+ 1920 x 1440 (1440p)
+
+
+
+ 2704 x 1440 (2.7k-17:9)
+
+
+
+ 2704 x 1524 (2.7k-16:9)
+
+
+
+ 2704 x 2028 (2.7k-4:3)
+
+
+
+ 3840 x 2160 (4k-16:9)
+
+
+
+ 4096 x 2160 (4k-17:9)
+
+
+
+ 1280 x 720 (720p-SuperView)
+
+
+
+ 1920 x 1080 (1080p-SuperView)
+
+
+
+ 2704 x 1520 (2.7k-SuperView)
+
+
+
+ 3840 x 2160 (4k-SuperView)
+
+
+
+
+
+ 12 FPS
+
+
+
+ 15 FPS
+
+
+
+ 24 FPS
+
+
+
+ 25 FPS
+
+
+
+ 30 FPS
+
+
+
+ 48 FPS
+
+
+
+ 50 FPS
+
+
+
+ 60 FPS
+
+
+
+ 80 FPS
+
+
+
+ 90 FPS
+
+
+
+ 100 FPS
+
+
+
+ 120 FPS
+
+
+
+ 240 FPS
+
+
+
+ 12.5 FPS
+
+
+
+
+
+ 0x00: Wide
+
+
+
+ 0x01: Medium
+
+
+
+ 0x02: Narrow
+
+
+
+
+
+ 0=NTSC, 1=PAL
+
+
+
+
+
+ 5MP Medium
+
+
+
+ 7MP Medium
+
+
+
+ 7MP Wide
+
+
+
+ 10MP Wide
+
+
+
+ 12MP Wide
+
+
+
+
+
+ Auto
+
+
+
+ 3000K
+
+
+
+ 5500K
+
+
+
+ 6500K
+
+
+
+ Camera Raw
+
+
+
+
+
+ Auto
+
+
+
+ Neutral
+
+
+
+
+
+ ISO 400
+
+
+
+ ISO 800 (Only Hero 4)
+
+
+
+ ISO 1600
+
+
+
+ ISO 3200 (Only Hero 4)
+
+
+
+ ISO 6400
+
+
+
+
+
+ Low Sharpness
+
+
+
+ Medium Sharpness
+
+
+
+ High Sharpness
+
+
+
+
+
+ -5.0 EV (Hero 3+ Only)
+
+
+
+ -4.5 EV (Hero 3+ Only)
+
+
+
+ -4.0 EV (Hero 3+ Only)
+
+
+
+ -3.5 EV (Hero 3+ Only)
+
+
+
+ -3.0 EV (Hero 3+ Only)
+
+
+
+ -2.5 EV (Hero 3+ Only)
+
+
+
+ -2.0 EV
+
+
+
+ -1.5 EV
+
+
+
+ -1.0 EV
+
+
+
+ -0.5 EV
+
+
+
+ 0.0 EV
+
+
+
+ +0.5 EV
+
+
+
+ +1.0 EV
+
+
+
+ +1.5 EV
+
+
+
+ +2.0 EV
+
+
+
+ +2.5 EV (Hero 3+ Only)
+
+
+
+ +3.0 EV (Hero 3+ Only)
+
+
+
+ +3.5 EV (Hero 3+ Only)
+
+
+
+ +4.0 EV (Hero 3+ Only)
+
+
+
+ +4.5 EV (Hero 3+ Only)
+
+
+
+ +5.0 EV (Hero 3+ Only)
+
+
+
+
+
+ Charging disabled
+
+
+
+ Charging enabled
+
+
+
+
+
+ Unknown gopro model
+
+
+
+ Hero 3+ Silver (HeroBus not supported by GoPro)
+
+
+
+ Hero 3+ Black
+
+
+
+ Hero 4 Silver
+
+
+
+ Hero 4 Black
+
+
+
+
+
+ 3 Shots / 1 Second
+
+
+
+ 5 Shots / 1 Second
+
+
+
+ 10 Shots / 1 Second
+
+
+
+ 10 Shots / 2 Second
+
+
+
+ 10 Shots / 3 Second (Hero 4 Only)
+
+
+
+ 30 Shots / 1 Second
+
+
+
+ 30 Shots / 2 Second
+
+
+
+ 30 Shots / 3 Second
+
+
+
+ 30 Shots / 6 Second
+
+
+
+
+
+
+ LED patterns off (return control to regular vehicle control)
+
+
+
+ LEDs show pattern during firmware update
+
+
+
+ Custom Pattern using custom bytes fields
+
+
+
+
+
+ Flags in EKF_STATUS message
+
+ set if EKF's attitude estimate is good
+
+
+
+ set if EKF's horizontal velocity estimate is good
+
+
+
+ set if EKF's vertical velocity estimate is good
+
+
+
+ set if EKF's horizontal position (relative) estimate is good
+
+
+
+ set if EKF's horizontal position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (above ground) estimate is good
+
+
+
+ EKF is in constant position mode and does not know it's absolute or relative position
+
+
+
+ set if EKF's predicted horizontal position (relative) estimate is good
+
+
+
+ set if EKF's predicted horizontal position (absolute) estimate is good
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Special ACK block numbers control activation of dataflash log streaming
+
+
+
+ UAV to stop sending DataFlash blocks
+
+
+
+
+ UAV to start sending DataFlash blocks
+
+
+
+
+
+
+ Possible remote log data block statuses
+
+ This block has NOT been received
+
+
+
+ This block has been received
+
+
+
+
+
+
+ Offsets and calibrations values for hardware sensors. This makes it easier to debug the calibration process.
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+ magnetic declination (radians)
+ raw pressure from barometer
+ raw temperature from barometer
+ gyro X calibration
+ gyro Y calibration
+ gyro Z calibration
+ accel X calibration
+ accel Y calibration
+ accel Z calibration
+
+
+
+ Deprecated. Use MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS instead. Set the magnetometer offsets
+ System ID
+ Component ID
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+
+
+
+ state of APM memory
+ heap top
+ free memory
+
+ free memory (32 bit)
+
+
+
+ raw ADC output
+ ADC output 1
+ ADC output 2
+ ADC output 3
+ ADC output 4
+ ADC output 5
+ ADC output 6
+
+
+
+
+ Configure on-board Camera Control System.
+ System ID
+ Component ID
+ Mode enumeration from 1 to N //P, TV, AV, M, Etc (0 means ignore)
+ Divisor number //e.g. 1000 means 1/1000 (0 means ignore)
+ F stop number x 10 //e.g. 28 means 2.8 (0 means ignore)
+ ISO enumeration from 1 to N //e.g. 80, 100, 200, Etc (0 means ignore)
+ Exposure type enumeration from 1 to N (0 means ignore)
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+ Control on-board Camera Control System to take shots.
+ System ID
+ Component ID
+ 0: stop, 1: start or keep it up //Session control e.g. show/hide lens
+ 1 to N //Zoom's absolute position (0 means ignore)
+ -100 to 100 //Zooming step value to offset zoom from the current position
+ 0: unlock focus or keep unlocked, 1: lock focus or keep locked, 3: re-lock focus
+ 0: ignore, 1: shot or start filming
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+
+ Message to configure a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ mount operating mode (see MAV_MOUNT_MODE enum)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+
+
+
+ Message to control a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ pitch(deg*100) or lat, depending on mount mode
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+ if "1" it will save current trimmed position on EEPROM (just valid for NEUTRAL and LANDING)
+
+
+
+ Message with some status from APM to GCS about camera or antenna mount
+ System ID
+ Component ID
+ pitch(deg*100)
+ roll(deg*100)
+ yaw(deg*100)
+
+
+
+
+ A fence point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+ total number of points (for sanity checking)
+ Latitude of point
+ Longitude of point
+
+
+
+ Request a current fence point from MAV
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+
+
+
+ Status of geo-fencing. Sent in extended status stream when fencing enabled
+ 0 if currently inside fence, 1 if outside
+ number of fence breaches
+ last breach type (see FENCE_BREACH_* enum)
+ time of last breach in milliseconds since boot
+
+
+
+ Status of DCM attitude estimator
+ X gyro drift estimate rad/s
+ Y gyro drift estimate rad/s
+ Z gyro drift estimate rad/s
+ average accel_weight
+ average renormalisation value
+ average error_roll_pitch value
+ average error_yaw value
+
+
+
+ Status of simulation environment, if used
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+ Status of key hardware
+ board voltage (mV)
+ I2C error count
+
+
+
+ Status generated by radio
+ local signal strength
+ remote signal strength
+ how full the tx buffer is as a percentage
+ background noise level
+ remote background noise level
+ receive errors
+ count of error corrected packets
+
+
+
+
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is enabled
+ state of AP_Limits, (see enum LimitState, LIMITS_STATE)
+ time of last breach in milliseconds since boot
+ time of last recovery action in milliseconds since boot
+ time of last successful recovery in milliseconds since boot
+ time of last all-clear in milliseconds since boot
+ number of fence breaches
+ AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE)
+
+
+
+ Wind estimation
+ wind direction that wind is coming from (degrees)
+ wind speed in ground plane (m/s)
+ vertical wind speed (m/s)
+
+
+
+ Data packet, size 16
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 32
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 64
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 96
+ data type
+ data length
+ raw data
+
+
+
+ Rangefinder reporting
+ distance in meters
+ raw voltage if available, zero otherwise
+
+
+
+ Airspeed auto-calibration
+ GPS velocity north m/s
+ GPS velocity east m/s
+ GPS velocity down m/s
+ Differential pressure pascals
+ Estimated to true airspeed ratio
+ Airspeed ratio
+ EKF state x
+ EKF state y
+ EKF state z
+ EKF Pax
+ EKF Pby
+ EKF Pcz
+
+
+
+
+ A rally point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 0)
+ total number of points (for sanity checking)
+ Latitude of point in degrees * 1E7
+ Longitude of point in degrees * 1E7
+ Transit / loiter altitude in meters relative to home
+
+ Break altitude in meters relative to home
+ Heading to aim for when landing. In centi-degrees.
+ See RALLY_FLAGS enum for definition of the bitmask.
+
+
+
+ Request a current rally point from MAV. MAV should respond with a RALLY_POINT message. MAV should not respond if the request is invalid.
+ System ID
+ Component ID
+ point index (first point is 0)
+
+
+
+ Status of compassmot calibration
+ throttle (percent*10)
+ current (amps)
+ interference (percent)
+ Motor Compensation X
+ Motor Compensation Y
+ Motor Compensation Z
+
+
+
+
+ Status of secondary AHRS filter if available
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+
+ Camera Event
+ Image timestamp (microseconds since UNIX epoch, according to camera clock)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ See CAMERA_STATUS_TYPES enum for definition of the bitmask
+ Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+
+
+
+
+ Camera Capture Feedback
+ Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ Latitude in (deg * 1E7)
+ Longitude in (deg * 1E7)
+ Altitude Absolute (meters AMSL)
+ Altitude Relative (meters above HOME location)
+ Camera Roll angle (earth frame, degrees, +-180)
+
+ Camera Pitch angle (earth frame, degrees, +-180)
+
+ Camera Yaw (earth frame, degrees, 0-360, true)
+
+ Focal Length (mm)
+
+ See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask
+
+
+
+
+ 2nd Battery status
+ voltage in millivolts
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+
+
+
+ Status of third AHRS filter if available. This is for ANU research group (Ali and Sean)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+ test variable1
+ test variable2
+ test variable3
+ test variable4
+
+
+
+ Request the autopilot version from the system/component.
+ System ID
+ Component ID
+
+
+
+
+ Send a block of log data to remote location
+ System ID
+ Component ID
+ log data block sequence number
+ log data block
+
+
+
+ Send Status of each log block that autopilot board might have sent
+ System ID
+ Component ID
+ log data block sequence number
+ log data block status
+
+
+
+ Control vehicle LEDs
+ System ID
+ Component ID
+ Instance (LED instance to control or 255 for all LEDs)
+ Pattern (see LED_PATTERN_ENUM)
+ Custom Byte Length
+ Custom Bytes
+
+
+
+ Reports progress of compass calibration.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ Attempt number
+ Completion percentage
+ Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid)
+ Body frame direction vector for display
+ Body frame direction vector for display
+ Body frame direction vector for display
+
+
+
+ Reports results of completed compass calibration. Sent until MAG_CAL_ACK received.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters
+ RMS milligauss residuals
+ X offset
+ Y offset
+ Z offset
+ X diagonal (matrix 11)
+ Y diagonal (matrix 22)
+ Z diagonal (matrix 33)
+ X off-diagonal (matrix 12 and 21)
+ Y off-diagonal (matrix 13 and 31)
+ Z off-diagonal (matrix 32 and 23)
+
+
+
+
+ EKF Status message including flags and variances
+ Flags
+
+ Velocity variance
+
+ Horizontal Position variance
+ Vertical Position variance
+ Compass variance
+ Terrain Altitude variance
+
+
+
+
+ PID tuning information
+ axis
+ desired rate (degrees/s)
+ achieved rate (degrees/s)
+ FF component
+ P component
+ I component
+ D component
+
+
+
+ 3 axis gimbal mesuraments
+ System ID
+ Component ID
+ Time since last update (seconds)
+ Delta angle X (radians)
+ Delta angle Y (radians)
+ Delta angle X (radians)
+ Delta velocity X (m/s)
+ Delta velocity Y (m/s)
+ Delta velocity Z (m/s)
+ Joint ROLL (radians)
+ Joint EL (radians)
+ Joint AZ (radians)
+
+
+
+ Control message for rate gimbal
+ System ID
+ Component ID
+ Demanded angular rate X (rad/s)
+ Demanded angular rate Y (rad/s)
+ Demanded angular rate Z (rad/s)
+
+
+
+ 100 Hz gimbal torque command telemetry
+ System ID
+ Component ID
+ Roll Torque Command
+ Elevation Torque Command
+ Azimuth Torque Command
+
+
+
+
+ Heartbeat from a HeroBus attached GoPro
+ Status
+ Current capture mode
+ additional status bits
+
+
+
+
+ Request a GOPRO_COMMAND response from the GoPro
+ System ID
+ Component ID
+ Command ID
+
+
+
+ Response from a GOPRO_COMMAND get request
+ Command ID
+ Status
+ Value
+
+
+
+ Request to set a GOPRO_COMMAND with a desired
+ System ID
+ Component ID
+ Command ID
+ Value
+
+
+
+ Response from a GOPRO_COMMAND set request
+ Command ID
+ Status
+
+
+
+
+ RPM sensor output
+ RPM Sensor1
+ RPM Sensor2
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.py
new file mode 100644
index 000000000..ba43875d8
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.py
@@ -0,0 +1,12303 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: autoquad.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'autoquad'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_PROPULSION = 13 # Motor/ESC telemetry data.
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_PROPULSION', '''Motor/ESC telemetry data.''')
+MAV_DATA_STREAM_ENUM_END = 14 #
+enums['MAV_DATA_STREAM'][14] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_AQ_TELEMETRY_F = 150
+MAVLINK_MSG_ID_AQ_ESC_TELEMETRY = 152
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_aq_telemetry_f_message(MAVLink_message):
+ '''
+ Sends up to 20 raw float values.
+ '''
+ id = MAVLINK_MSG_ID_AQ_TELEMETRY_F
+ name = 'AQ_TELEMETRY_F'
+ fieldnames = ['Index', 'value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7', 'value8', 'value9', 'value10', 'value11', 'value12', 'value13', 'value14', 'value15', 'value16', 'value17', 'value18', 'value19', 'value20']
+ ordered_fieldnames = [ 'value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7', 'value8', 'value9', 'value10', 'value11', 'value12', 'value13', 'value14', 'value15', 'value16', 'value17', 'value18', 'value19', 'value20', 'Index' ]
+ format = ' 4 motors.
+ Data is described as follows:
+ // unsigned int state : 3; //
+ unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error count
+ // - Data Version 3 - //
+ unsigned int temp : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+ '''
+ id = MAVLINK_MSG_ID_AQ_ESC_TELEMETRY
+ name = 'AQ_ESC_TELEMETRY'
+ fieldnames = ['time_boot_ms', 'seq', 'num_motors', 'num_in_seq', 'escid', 'status_age', 'data_version', 'data0', 'data1']
+ ordered_fieldnames = [ 'time_boot_ms', 'data0', 'data1', 'status_age', 'seq', 'num_motors', 'num_in_seq', 'escid', 'data_version' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack(' 4 motors. Data
+ is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error
+ count // - Data Version 3
+ - // unsigned int temp
+ : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ time_boot_ms : Timestamp of the component clock since boot time in ms. (uint32_t)
+ seq : Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc). (uint8_t)
+ num_motors : Total number of active ESCs/motors on the system. (uint8_t)
+ num_in_seq : Number of active ESCs in this sequence (1 through this many array members will be populated with data) (uint8_t)
+ escid : ESC/Motor ID (uint8_t)
+ status_age : Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data. (uint16_t)
+ data_version : Version of data structure (determines contents). (uint8_t)
+ data0 : Data bits 1-32 for each ESC. (uint32_t)
+ data1 : Data bits 33-64 for each ESC. (uint32_t)
+
+ '''
+ return MAVLink_aq_esc_telemetry_message(time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1)
+
+ def aq_esc_telemetry_send(self, time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1, force_mavlink1=False):
+ '''
+ Sends ESC32 telemetry data for up to 4 motors. Multiple messages may
+ be sent in sequence when system has > 4 motors. Data
+ is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 - //
+ unsigned int errors : 9; // Bad detects error
+ count // - Data Version 3
+ - // unsigned int temp
+ : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ time_boot_ms : Timestamp of the component clock since boot time in ms. (uint32_t)
+ seq : Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc). (uint8_t)
+ num_motors : Total number of active ESCs/motors on the system. (uint8_t)
+ num_in_seq : Number of active ESCs in this sequence (1 through this many array members will be populated with data) (uint8_t)
+ escid : ESC/Motor ID (uint8_t)
+ status_age : Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data. (uint16_t)
+ data_version : Version of data structure (determines contents). (uint8_t)
+ data0 : Data bits 1-32 for each ESC. (uint32_t)
+ data1 : Data bits 33-64 for each ESC. (uint32_t)
+
+ '''
+ return self.send(self.aq_esc_telemetry_encode(time_boot_ms, seq, num_motors, num_in_seq, escid, status_age, data_version, data0, data1), force_mavlink1=force_mavlink1)
+
+ def heartbeat_encode(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return MAVLink_heartbeat_message(type, autopilot, base_mode, custom_mode, system_status, mavlink_version)
+
+ def heartbeat_send(self, type, autopilot, base_mode, custom_mode, system_status, mavlink_version=3, force_mavlink1=False):
+ '''
+ The heartbeat message shows that a system is present and responding.
+ The type of the MAV and Autopilot hardware allow the
+ receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user
+ interface based on the autopilot).
+
+ type : Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) (uint8_t)
+ autopilot : Autopilot type / class. defined in MAV_AUTOPILOT ENUM (uint8_t)
+ base_mode : System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h (uint8_t)
+ custom_mode : A bitfield for use for autopilot-specific flags. (uint32_t)
+ system_status : System status flag, see MAV_STATE ENUM (uint8_t)
+ mavlink_version : MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version (uint8_t)
+
+ '''
+ return self.send(self.heartbeat_encode(type, autopilot, base_mode, custom_mode, system_status, mavlink_version), force_mavlink1=force_mavlink1)
+
+ def sys_status_encode(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return MAVLink_sys_status_message(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4)
+
+ def sys_status_send(self, onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4, force_mavlink1=False):
+ '''
+ 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 wether the system is currently
+ active or not and if an emergency occured. During the
+ CRITICAL and EMERGENCY states the MAV is still
+ considered to be active, but should start emergency
+ procedures autonomously. After a failure occured it
+ should first move from active to critical to allow
+ manual intervention and then move to emergency after a
+ certain timeout.
+
+ onboard_control_sensors_present : Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_enabled : Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ onboard_control_sensors_health : Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR (uint32_t)
+ load : Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000 (uint16_t)
+ voltage_battery : Battery voltage, in millivolts (1 = 1 millivolt) (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery (int8_t)
+ drop_rate_comm : Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_comm : Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV) (uint16_t)
+ errors_count1 : Autopilot-specific errors (uint16_t)
+ errors_count2 : Autopilot-specific errors (uint16_t)
+ errors_count3 : Autopilot-specific errors (uint16_t)
+ errors_count4 : Autopilot-specific errors (uint16_t)
+
+ '''
+ return self.send(self.sys_status_encode(onboard_control_sensors_present, onboard_control_sensors_enabled, onboard_control_sensors_health, load, voltage_battery, current_battery, battery_remaining, drop_rate_comm, errors_comm, errors_count1, errors_count2, errors_count3, errors_count4), force_mavlink1=force_mavlink1)
+
+ def system_time_encode(self, time_unix_usec, time_boot_ms):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return MAVLink_system_time_message(time_unix_usec, time_boot_ms)
+
+ def system_time_send(self, time_unix_usec, time_boot_ms, force_mavlink1=False):
+ '''
+ The system time is the time of the master clock, typically the
+ computer clock of the main onboard computer.
+
+ time_unix_usec : Timestamp of the master clock in microseconds since UNIX epoch. (uint64_t)
+ time_boot_ms : Timestamp of the component clock since boot time in milliseconds. (uint32_t)
+
+ '''
+ return self.send(self.system_time_encode(time_unix_usec, time_boot_ms), force_mavlink1=force_mavlink1)
+
+ def ping_encode(self, time_usec, seq, target_system, target_component):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return MAVLink_ping_message(time_usec, seq, target_system, target_component)
+
+ def ping_send(self, time_usec, seq, target_system, target_component, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009) (uint64_t)
+ seq : PING sequence (uint32_t)
+ 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 (uint8_t)
+ target_component : 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system (uint8_t)
+
+ '''
+ return self.send(self.ping_encode(time_usec, seq, target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_encode(self, target_system, control_request, version, passkey):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return MAVLink_change_operator_control_message(target_system, control_request, version, passkey)
+
+ def change_operator_control_send(self, target_system, control_request, version, passkey, force_mavlink1=False):
+ '''
+ Request to control this MAV
+
+ target_system : System the GCS requests control for (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ version : 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. (uint8_t)
+ 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 "!?,.-" (char)
+
+ '''
+ return self.send(self.change_operator_control_encode(target_system, control_request, version, passkey), force_mavlink1=force_mavlink1)
+
+ def change_operator_control_ack_encode(self, gcs_system_id, control_request, ack):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return MAVLink_change_operator_control_ack_message(gcs_system_id, control_request, ack)
+
+ def change_operator_control_ack_send(self, gcs_system_id, control_request, ack, force_mavlink1=False):
+ '''
+ Accept / deny control of this MAV
+
+ gcs_system_id : ID of the GCS this message (uint8_t)
+ control_request : 0: request control of this MAV, 1: Release control of this MAV (uint8_t)
+ ack : 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control (uint8_t)
+
+ '''
+ return self.send(self.change_operator_control_ack_encode(gcs_system_id, control_request, ack), force_mavlink1=force_mavlink1)
+
+ def auth_key_encode(self, key):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return MAVLink_auth_key_message(key)
+
+ def auth_key_send(self, key, force_mavlink1=False):
+ '''
+ 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.
+
+ key : key (char)
+
+ '''
+ return self.send(self.auth_key_encode(key), force_mavlink1=force_mavlink1)
+
+ def set_mode_encode(self, target_system, base_mode, custom_mode):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return MAVLink_set_mode_message(target_system, base_mode, custom_mode)
+
+ def set_mode_send(self, target_system, base_mode, custom_mode, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with
+ MAV_CMD_DO_SET_MODE INSTEAD. 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.
+
+ target_system : The system setting the mode (uint8_t)
+ base_mode : The new base mode (uint8_t)
+ custom_mode : The new autopilot-specific mode. This field can be ignored by an autopilot. (uint32_t)
+
+ '''
+ return self.send(self.set_mode_encode(target_system, base_mode, custom_mode), force_mavlink1=force_mavlink1)
+
+ def param_request_read_encode(self, target_system, target_component, param_id, param_index):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.xml
new file mode 100644
index 000000000..8c224783b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/autoquad.xml
@@ -0,0 +1,169 @@
+
+
+ common.xml
+ 3
+
+
+ Track current version of these definitions (can be used by checking value of AUTOQUAD_MAVLINK_DEFS_VERSION_ENUM_END). Append a new entry for each published change.
+
+
+
+ Available operating modes/statuses for AutoQuad flight controller.
+ Bitmask up to 32 bits. Low side bits for base modes, high side for
+ additional active features/modifiers/constraints.
+
+ System is initializing
+
+
+
+ System is *armed* and standing by, with no throttle input and no autonomous mode
+
+
+ Flying (throttle input detected), assumed under manual control unless other mode bits are set
+
+
+ Altitude hold engaged
+
+
+ Position hold engaged
+
+
+ Externally-guided (eg. GCS) navigation mode
+
+
+ Autonomous mission execution mode
+
+
+
+ Ready but *not armed*
+
+
+ Calibration mode active
+
+
+
+ No valid control input (eg. no radio link)
+
+
+ Battery is low (stage 1 warning)
+
+
+ Battery is depleted (stage 2 warning)
+
+
+
+ Dynamic Velocity Hold is active (PH with proportional manual direction override)
+
+
+ ynamic Altitude Override is active (AH with proportional manual adjustment)
+
+
+
+ Craft is at ceiling altitude
+
+
+ Ceiling altitude is set
+
+
+ Heading-Free dynamic mode active
+
+
+ Heading-Free locked mode active
+
+
+ Automatic Return to Home is active
+
+
+ System is in failsafe recovery mode
+
+
+
+
+ Orbit a waypoint.
+ Orbit radius in meters
+ Loiter time in decimal seconds
+ Maximum horizontal speed in m/s
+ Desired yaw angle at waypoint
+ Latitude
+ Longitude
+ Altitude
+
+
+ Start/stop AutoQuad telemetry values stream.
+ Start or stop (1 or 0)
+ Stream frequency in us
+ Dataset ID (refer to aq_mavlink.h::mavlinkCustomDataSets enum in AQ flight controller code)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Request AutoQuad firmware version number.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Motor/ESC telemetry data.
+
+
+
+
+
+ Sends up to 20 raw float values.
+ Index of message
+ value1
+ value2
+ value3
+ value4
+ value5
+ value6
+ value7
+ value8
+ value9
+ value10
+ value11
+ value12
+ value13
+ value14
+ value15
+ value16
+ value17
+ value18
+ value19
+ value20
+
+
+ Sends ESC32 telemetry data for up to 4 motors. Multiple messages may be sent in sequence when system has > 4 motors. Data is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 -
+ // unsigned int errors : 9; // Bad detects error count
+ // - Data Version 3 -
+ // unsigned int temp : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ Timestamp of the component clock since boot time in ms.
+ Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc).
+ Total number of active ESCs/motors on the system.
+ Number of active ESCs in this sequence (1 through this many array members will be populated with data)
+ ESC/Motor ID
+ Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data.
+ Version of data structure (determines contents).
+ Data bits 1-32 for each ESC.
+ Data bits 33-64 for each ESC.
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.py
new file mode 100644
index 000000000..0db6df0f8
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.py
@@ -0,0 +1,12010 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'common'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_heartbeat_message(MAVLink_message):
+ '''
+ The heartbeat message shows that a system is present and
+ responding. The type of the MAV and Autopilot hardware allow
+ the receiving system to treat further messages from this
+ system appropriate (e.g. by laying out the user interface
+ based on the autopilot).
+ '''
+ id = MAVLINK_MSG_ID_HEARTBEAT
+ name = 'HEARTBEAT'
+ fieldnames = ['type', 'autopilot', 'base_mode', 'custom_mode', 'system_status', 'mavlink_version']
+ ordered_fieldnames = [ 'custom_mode', 'type', 'autopilot', 'base_mode', 'system_status', 'mavlink_version' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.xml
new file mode 100644
index 000000000..8718cd7da
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/common.xml
@@ -0,0 +1,3716 @@
+
+
+ 3
+ 0
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ Reserved for future use.
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+ PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+
+
+ SMACCMPilot - http://smaccmpilot.org
+
+
+ AutoQuad -- http://autoquad.org
+
+
+ Armazila -- http://armazila.com
+
+
+ Aerob -- http://aerob.ru
+
+
+ ASLUAV autopilot -- http://www.asl.ethz.ch
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Tricopter
+
+
+ Flapping wing
+
+
+ Kite
+
+
+ Onboard companion controller
+
+
+ Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.
+
+
+ Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.
+
+
+ Tiltrotor VTOL
+
+
+
+ VTOL reserved 2
+
+
+ VTOL reserved 3
+
+
+ VTOL reserved 4
+
+
+ VTOL reserved 5
+
+
+ Onboard gimbal
+
+
+ Onboard ADSB peripheral
+
+
+
+ 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.
+
+ development release
+
+
+ alpha release
+
+
+ beta release
+
+
+ release candidate
+
+
+ official stable release
+
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+ Override command, pauses current mission execution and moves immediately to a position
+
+ Hold at the current position.
+
+
+ Continue with the next item in mission execution.
+
+
+ Hold at the current position of the system
+
+
+ Hold at the position specified in the parameters of the DO_HOLD action
+
+
+
+ These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but it
+ simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.
+
+ System is not ready to fly, booting, calibrating, etc. No flag is set.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ On Screen Display (OSD) devices for video links
+
+
+ Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol
+
+
+
+
+
+
+ These encode the sensors whose status is sent as part of the SYS_STATUS message.
+
+ 0x01 3D gyro
+
+
+ 0x02 3D accelerometer
+
+
+ 0x04 3D magnetometer
+
+
+ 0x08 absolute pressure
+
+
+ 0x10 differential pressure
+
+
+ 0x20 GPS
+
+
+ 0x40 optical flow
+
+
+ 0x80 computer vision position
+
+
+ 0x100 laser based position
+
+
+ 0x200 external ground truth (Vicon or Leica)
+
+
+ 0x400 3D angular rate control
+
+
+ 0x800 attitude stabilization
+
+
+ 0x1000 yaw position
+
+
+ 0x2000 z/altitude control
+
+
+ 0x4000 x/y position control
+
+
+ 0x8000 motor outputs / control
+
+
+ 0x10000 rc receiver
+
+
+ 0x20000 2nd 3D gyro
+
+
+ 0x40000 2nd 3D accelerometer
+
+
+ 0x80000 2nd 3D magnetometer
+
+
+ 0x100000 geofence
+
+
+ 0x200000 AHRS subsystem health
+
+
+ 0x400000 Terrain subsystem health
+
+
+ 0x800000 Motors are reversed
+
+
+ 0x1000000 Logging
+
+
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Local coordinate frame, Z-up (x: north, y: east, z: down).
+
+
+ NOT a coordinate frame, indicates a mission command.
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Local coordinate frame, Z-down (x: east, y: north, z: up)
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.
+
+
+ Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.
+
+
+ Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable fenced mode
+
+
+ Switched to guided mode to return point (fence point 0)
+
+
+ Report fence breach, but don't take action
+
+
+ Switched to guided mode to return point (fence point 0) with manual throttle control
+
+
+ Switch to RTL (return to launch) mode and head for the return point.
+
+
+
+
+
+ No last fence breach
+
+
+ Breached minimum altitude
+
+
+ Breached maximum altitude
+
+
+ Breached fence boundary
+
+
+
+
+ Enumeration of possible mount operation modes
+ Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization
+ Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+ Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start RC Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start to point to Lat,Lon,Alt
+
+
+ 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.
+
+ Navigate to MISSION.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Acceptance radius in meters (if the sphere with this radius is hit, the MISSION counts as reached)
+ 0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.
+ Desired yaw angle at MISSION (rotary wing)
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION an unlimited amount of time
+ Empty
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X turns
+ Turns
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X seconds
+ Seconds (decimal)
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Return to launch location
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Land at location
+ Abort Alt
+ Empty
+ Empty
+ Desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Takeoff from ground / hand
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor
+ Empty
+ Empty
+ Yaw angle (if magnetometer present), ignored without magnetometer
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land at local position (local frame only)
+ Landing target number (if available)
+ Maximum accepted offset from desired landing position [m] - 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
+ Landing descend rate [ms^-1]
+ Desired yaw angle [rad]
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis / ground level position [m]
+
+
+ Takeoff from local position (local frame only)
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]
+ Empty
+ Takeoff ascend rate [ms^-1]
+ Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis position [m]
+
+
+ Vehicle following, i.e. this waypoint represents the position of a moving vehicle
+ Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation
+ Ground speed of vehicle to be followed
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ 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.
+ 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Desired altitude in meters
+
+
+ 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.
+ Heading Required (0 = False)
+ Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.
+ Empty
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location
+ Latitude
+ Longitude
+ Altitude
+
+
+ Being following a target
+ System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode
+ RESERVED
+ RESERVED
+ altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home
+ altitude
+ RESERVED
+ TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout
+
+
+ Reposition the MAV after a follow target command has been sent
+ Camera q1 (where 0 is on the ray from the camera to the tracking device)
+ Camera q2
+ Camera q3
+ Camera q4
+ altitude offset from target (m)
+ X offset from target (m)
+ Y offset from target (m)
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+ Control autonomous path planning on the MAV.
+ 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning
+ 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
+ Empty
+ Yaw angle at goal, in compass degrees, [0..360]
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Navigate to MISSION using a spline path.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Empty
+ Empty
+ Empty
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Takeoff from ground using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+
+
+
+ hand control over to an external controller
+ On / Off (> 0.5f on)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay the next navigation command a number of seconds or until a specified time
+ Delay in seconds (decimal, -1 to enable time-of-day fields)
+ hour (24h format, UTC, -1 to ignore)
+ minute (24h format, UTC, -1 to ignore)
+ second (24h format, UTC)
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay mission state machine.
+ Delay in seconds (decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Ascend/descend at rate. Delay mission state machine until desired altitude reached.
+ Descent / Ascend rate (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Finish Altitude
+
+
+ Delay mission state machine until within desired distance of next NAV point.
+ Distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Reach a certain target angle.
+ target angle: [0-360], 0 is north
+ speed during yaw change:[deg per second]
+ direction: negative: counter clockwise, positive: clockwise [-1,1]
+ relative offset or absolute angle: [ 1,0]
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set system mode.
+ Mode, as defined by ENUM MAV_MODE
+ Custom mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Jump to the desired command in the mission list. Repeat this action only the specified number of times
+ Sequence number
+ Repeat count
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change speed and/or throttle set points.
+ Speed type (0=Airspeed, 1=Ground Speed)
+ Speed (m/s, -1 indicates no change)
+ Throttle ( Percent, -1 indicates no change)
+ absolute or relative [0,1]
+ Empty
+ Empty
+ Empty
+
+
+ Changes the home location either to the current location or a specified location.
+ Use current (1=use current location, 0=use specified location)
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Altitude
+
+
+ Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.
+ Parameter number
+ Parameter value
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a relay to a condition.
+ Relay number
+ Setting (1=on, 0=off, others possible depending on system hardware)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a relay on and off for a desired number of cyles with a desired period.
+ Relay number
+ Cycle count
+ Cycle time (seconds, decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a servo to a desired PWM value.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Cycle count
+ Cycle time (seconds)
+ Empty
+ Empty
+ Empty
+
+
+ Terminate flight immediately
+ Flight termination activated if > 0.5
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change altitude set point.
+ Altitude in meters
+ Mav frame of new altitude (see MAV_FRAME)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.
+ Empty
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Empty
+
+
+ Mission command to perform a landing from a rally point.
+ Break altitude (meters)
+ Landing speed (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to safely abort an autonmous landing.
+ Altitude (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reposition the vehicle to a specific WGS84 global position.
+ Ground speed, less than 0 (-1) for default
+ Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.
+ Reserved
+ Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)
+ Latitude (deg * 1E7)
+ Longitude (deg * 1E7)
+ Altitude (meters)
+
+
+ If in a GPS controlled position mode, hold the current position or continue.
+ 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.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Set moving direction to forward or reverse.
+ Direction (0=Forward, 1=Reverse)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Control onboard camera system.
+ Camera ID (-1 for all)
+ Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Transmission mode: 0: video stream, >0: single images every n seconds (decimal)
+ Recording: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Empty
+ Empty
+ Empty
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+
+
+ Mission command to configure an on-board camera controller system.
+ Modes: P, TV, AV, M, Etc
+ Shutter speed: Divisor number for one second
+ Aperture: F stop number
+ ISO number e.g. 80, 100, 200, Etc
+ Exposure type enumerator
+ Command Identity
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+
+
+
+ Mission command to control an on-board camera controller system.
+ Session control e.g. show/hide lens
+ Zoom's absolute position
+ Zooming step value to offset zoom from the current position
+ Focus Locking, Unlocking or Re-locking
+ Shooting Command
+ Command Identity
+ Empty
+
+
+
+
+ Mission command to configure a camera or antenna mount
+ Mount operation mode (see MAV_MOUNT_MODE enum)
+ stabilize roll? (1 = yes, 0 = no)
+ stabilize pitch? (1 = yes, 0 = no)
+ stabilize yaw? (1 = yes, 0 = no)
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to control a camera or antenna mount
+ pitch or lat in degrees, depending on mount mode.
+ roll or lon in degrees depending on mount mode
+ yaw or alt (in meters) depending on mount mode
+ reserved
+ reserved
+ reserved
+ MAV_MOUNT_MODE enum value
+
+
+
+ Mission command to set CAM_TRIGG_DIST for this flight
+ Camera trigger distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to enable the geofence
+ enable? (0=disable, 1=enable, 2=disable_floor_only)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to trigger a parachute
+ action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to perform motor test
+ motor sequence number (a number from 1 to max number of motors on the vehicle)
+ throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)
+ throttle
+ timeout (in seconds)
+ Empty
+ Empty
+ Empty
+
+
+
+ Change to/from inverted flight
+ inverted (0=normal, 1=inverted)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Sets a desired vehicle turn angle and thrust change
+ yaw angle to adjust steering by in centidegress
+ Thrust - normalized to -2 .. 2
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ Mission command to control a camera or antenna mount, using a quaternion as reference.
+ q1 - quaternion param #1, w (1 in null-rotation)
+ q2 - quaternion param #2, x (0 in null-rotation)
+ q3 - quaternion param #3, y (0 in null-rotation)
+ q4 - quaternion param #4, z (0 in null-rotation)
+ Empty
+ Empty
+ Empty
+
+
+
+ set id of master controller
+ System ID
+ Component ID
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ set limits for external control
+ timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout
+ absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit
+ absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit
+ horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit
+ Empty
+ Empty
+ Empty
+
+
+
+ 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
+ 0: Stop engine, 1:Start Engine
+ 0: Warm start, 1:Cold start. Controls use of choke where applicable
+ Height delay (meters). 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ NOP - This command is only used to mark the upper limit of the DO commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Trigger calibration. This command will be only accepted if in pre-flight mode.
+ Gyro calibration: 0: no, 1: yes
+ Magnetometer calibration: 0: no, 1: yes
+ Ground pressure: 0: no, 1: yes
+ Radio calibration: 0: no, 1: yes
+ Accelerometer calibration: 0: no, 1: yes
+ Compass/Motor interference calibration: 0: no, 1: yes
+ Empty
+
+
+ Set sensor offsets. This command will be only accepted if in pre-flight mode.
+ Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer
+ X axis offset (or generic dimension 1), in the sensor's raw units
+ Y axis offset (or generic dimension 2), in the sensor's raw units
+ Z axis offset (or generic dimension 3), in the sensor's raw units
+ Generic dimension 4, in the sensor's raw units
+ Generic dimension 5, in the sensor's raw units
+ Generic dimension 6, in the sensor's raw units
+
+
+ Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.
+ 1: Trigger actuator ID assignment and direction mapping.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)
+ Reserved
+ Empty
+ Empty
+ Empty
+
+
+ Request the reboot or shutdown of system components.
+ 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.
+ 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.
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+
+
+ Hold / continue the current action
+ MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan
+ MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position
+ MAV_FRAME coordinate frame of hold point
+ Desired yaw angle in degrees
+ Latitude / X position
+ Longitude / Y position
+ Altitude / Z position
+
+
+ start running a mission
+ first_item: the first mission item to run
+ last_item: the last mission item to run (after this item is run, the mission ends)
+
+
+ Arms / Disarms a component
+ 1 to arm, 0 to disarm
+
+
+ Request the home position from the vehicle.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Starts receiver pairing
+ 0:Spektrum
+ 0:Spektrum DSM2, 1:Spektrum DSMX
+
+
+ Request the interval between messages for a particular MAVLink message ID
+ The MAVLink message ID
+
+
+ Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM
+ The MAVLink message ID
+ The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.
+
+
+ Request autopilot capabilities
+ 1: Request autopilot version
+ Reserved (all remaining params)
+
+
+ Start image capture sequence
+ Duration between two consecutive pictures (in seconds)
+ Number of images to capture total - 0 for unlimited capture
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop image capture sequence
+ Reserved
+ Reserved
+
+
+
+ Enable or disable on-board camera triggering system.
+ Trigger enable/disable (0 for disable, 1 for start)
+ Shutter integration time (in ms)
+ Reserved
+
+
+
+ Starts video capture
+ Camera ID (0 for all cameras), 1 for first, 2 for second, etc.
+ Frames per second
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop the current video capture
+ Reserved
+ Reserved
+
+
+
+ Create a panorama at the current position
+ Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)
+ Viewing angle vertical of panorama (in degrees)
+ Speed of the horizontal rotation (in degrees per second)
+ Speed of the vertical rotation (in degrees per second)
+
+
+
+ Request VTOL transition
+ The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.
+
+
+
+ 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 velocites along all three axes.
+
+
+
+
+ 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.
+
+ Radius of desired circle in CIRCLE_MODE
+ User defined
+ User defined
+ User defined
+ Unscaled target latitude of center of circle in CIRCLE_MODE
+ Unscaled target longitude of center of circle in CIRCLE_MODE
+
+
+
+
+
+
+ Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.
+ 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.
+ Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.
+ Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.
+ Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.
+ Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Altitude, in meters AMSL
+
+
+ Control the payload deployment.
+ Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+
+
+ THIS INTERFACE IS DEPRECATED AS OF JULY 2015. Please use MESSAGE_INTERVAL instead. 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.
+
+ Enable all data streams
+
+
+ Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+
+
+ Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+
+
+ Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+
+
+ Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.
+
+
+ Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+
+ 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).
+
+ No region of interest.
+
+
+ Point toward next MISSION.
+
+
+ Point toward given MISSION.
+
+
+ Point toward fixed location.
+
+
+ Point toward of given id.
+
+
+
+ ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.
+
+ Command / mission item is ok.
+
+
+ Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.
+
+
+ The system is refusing to accept this command from this source / communication partner.
+
+
+ Command or mission item is not supported, other commands would be accepted.
+
+
+ The coordinate frame of this command / mission item is not supported.
+
+
+ The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.
+
+
+ The X or latitude value is out of range.
+
+
+ The Y or longitude value is out of range.
+
+
+ The Z or altitude value is out of range.
+
+
+
+ Specifies the datatype of a MAVLink parameter.
+
+ 8-bit unsigned integer
+
+
+ 8-bit signed integer
+
+
+ 16-bit unsigned integer
+
+
+ 16-bit signed integer
+
+
+ 32-bit unsigned integer
+
+
+ 32-bit signed integer
+
+
+ 64-bit unsigned integer
+
+
+ 64-bit signed integer
+
+
+ 32-bit floating-point
+
+
+ 64-bit floating-point
+
+
+
+ result from a mavlink command
+
+ Command ACCEPTED and EXECUTED
+
+
+ Command TEMPORARY REJECTED/DENIED
+
+
+ Command PERMANENTLY DENIED
+
+
+ Command UNKNOWN/UNSUPPORTED
+
+
+ Command executed, but failed
+
+
+
+ result in a mavlink mission ack
+
+ mission accepted OK
+
+
+ generic error / not accepting mission commands at all right now
+
+
+ coordinate frame is not supported
+
+
+ command is not supported
+
+
+ mission item exceeds storage space
+
+
+ one of the parameters has an invalid value
+
+
+ param1 has an invalid value
+
+
+ param2 has an invalid value
+
+
+ param3 has an invalid value
+
+
+ param4 has an invalid value
+
+
+ x/param5 has an invalid value
+
+
+ y/param6 has an invalid value
+
+
+ param7 has an invalid value
+
+
+ received waypoint out of sequence
+
+
+ not accepting any mission commands from this communication partner
+
+
+
+ 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/.
+
+ System is unusable. This is a "panic" condition.
+
+
+ Action should be taken immediately. Indicates error in non-critical systems.
+
+
+ Action must be taken immediately. Indicates failure in a primary system.
+
+
+ Indicates an error in secondary/redundant systems.
+
+
+ Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.
+
+
+ An unusual event has occured, though not an error condition. This should be investigated for the root cause.
+
+
+ Normal operational messages. Useful for logging. No action is required for these messages.
+
+
+ Useful non-operational messages that can assist in debugging. These should not occur during normal operation.
+
+
+
+ Power supply status flags (bitmask)
+
+ main brick power supply valid
+
+
+ main servo power supply valid for FMU
+
+
+ USB power is connected
+
+
+ peripheral supply is in over-current state
+
+
+ hi-power peripheral supply is in over-current state
+
+
+ Power status has changed since boot
+
+
+
+ SERIAL_CONTROL device types
+
+ First telemetry port
+
+
+ Second telemetry port
+
+
+ First GPS port
+
+
+ Second GPS port
+
+
+ system shell
+
+
+
+ SERIAL_CONTROL flags (bitmask)
+
+ Set if this is a reply
+
+
+ Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message
+
+
+ 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
+
+
+ Block on writes to the serial port
+
+
+ Send multiple replies until port is drained
+
+
+
+ Enumeration of distance sensor types
+
+ Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+
+
+ Ultrasound rangefinder, e.g. MaxBotix units
+
+
+ Infrared rangefinder, e.g. Sharp units
+
+
+
+ Enumeration of sensor orientation, according to its rotations
+
+ Roll: 0, Pitch: 0, Yaw: 0
+
+
+ Roll: 0, Pitch: 0, Yaw: 45
+
+
+ Roll: 0, Pitch: 0, Yaw: 90
+
+
+ Roll: 0, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 0, Yaw: 180
+
+
+ Roll: 0, Pitch: 0, Yaw: 225
+
+
+ Roll: 0, Pitch: 0, Yaw: 270
+
+
+ Roll: 0, Pitch: 0, Yaw: 315
+
+
+ Roll: 180, Pitch: 0, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 45
+
+
+ Roll: 180, Pitch: 0, Yaw: 90
+
+
+ Roll: 180, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 180, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 225
+
+
+ Roll: 180, Pitch: 0, Yaw: 270
+
+
+ Roll: 180, Pitch: 0, Yaw: 315
+
+
+ Roll: 90, Pitch: 0, Yaw: 0
+
+
+ Roll: 90, Pitch: 0, Yaw: 45
+
+
+ Roll: 90, Pitch: 0, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 135
+
+
+ Roll: 270, Pitch: 0, Yaw: 0
+
+
+ Roll: 270, Pitch: 0, Yaw: 45
+
+
+ Roll: 270, Pitch: 0, Yaw: 90
+
+
+ Roll: 270, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 90, Yaw: 0
+
+
+ Roll: 0, Pitch: 270, Yaw: 0
+
+
+ Roll: 0, Pitch: 180, Yaw: 90
+
+
+ Roll: 0, Pitch: 180, Yaw: 270
+
+
+ Roll: 90, Pitch: 90, Yaw: 0
+
+
+ Roll: 180, Pitch: 90, Yaw: 0
+
+
+ Roll: 270, Pitch: 90, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 0
+
+
+ Roll: 270, Pitch: 180, Yaw: 0
+
+
+ Roll: 90, Pitch: 270, Yaw: 0
+
+
+ Roll: 180, Pitch: 270, Yaw: 0
+
+
+ Roll: 270, Pitch: 270, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 270
+
+
+ Roll: 315, Pitch: 315, Yaw: 315
+
+
+
+ Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.
+
+ Autopilot supports MISSION float message type.
+
+
+ Autopilot supports the new param float message type.
+
+
+ Autopilot supports MISSION_INT scaled integer message type.
+
+
+ Autopilot supports COMMAND_INT scaled integer message type.
+
+
+ Autopilot supports the new param union message type.
+
+
+ Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+
+
+ Autopilot supports commanding attitude offboard.
+
+
+ Autopilot supports commanding position and velocity targets in local NED frame.
+
+
+ Autopilot supports commanding position and velocity targets in global scaled integers.
+
+
+ Autopilot supports terrain protocol / data handling.
+
+
+ Autopilot supports direct actuator control.
+
+
+ Autopilot supports the flight termination command.
+
+
+ Autopilot supports onboard compass calibration.
+
+
+ Autopilot supports mavlink version 2.
+
+
+
+ Enumeration of estimator types
+
+ This is a naive estimator without any real covariance feedback.
+
+
+ Computer vision based estimate. Might be up to scale.
+
+
+ Visual-inertial estimate.
+
+
+ Plain GPS estimate.
+
+
+ Estimator integrating GPS and inertial sensing.
+
+
+
+ Enumeration of battery types
+
+ Not specified.
+
+
+ Lithium polymer battery
+
+
+ Lithium-iron-phosphate battery
+
+
+ Lithium-ION battery
+
+
+ Nickel metal hydride battery
+
+
+
+ Enumeration of battery functions
+
+ Battery function is unknown
+
+
+ Battery supports all flight systems
+
+
+ Battery for the propulsion system
+
+
+ Avionics battery
+
+
+ Payload battery
+
+
+
+ Enumeration of VTOL states
+
+ MAV is not configured as VTOL
+
+
+ VTOL is in transition from multicopter to fixed-wing
+
+
+ VTOL is in transition from fixed-wing to multicopter
+
+
+ VTOL is in multicopter state
+
+
+ VTOL is in fixed-wing state
+
+
+
+ Enumeration of landed detector states
+
+ MAV landed state is unknown
+
+
+ MAV is landed (on ground)
+
+
+ MAV is in air
+
+
+
+ Enumeration of the ADSB altimeter types
+
+ Altitude reported from a Baro source using QNH reference
+
+
+ Altitude reported from a GNSS source
+
+
+
+ ADSB classification for the type of vehicle emitting the transponder signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ These flags indicate status such as data validity of each data source. Set = data valid
+
+
+
+
+
+
+
+
+
+ Bitmask of options for the MAV_CMD_DO_REPOSITION
+
+ The aircraft should immediately transition into guided. This should not be set for follow me applications
+
+
+
+
+ Flags in EKF_STATUS message
+
+ True if the attitude estimate is good
+
+
+
+ True if the horizontal velocity estimate is good
+
+
+
+ True if the vertical velocity estimate is good
+
+
+
+ True if the horizontal position (relative) estimate is good
+
+
+
+ True if the horizontal position (absolute) estimate is good
+
+
+
+ True if the vertical position (absolute) estimate is good
+
+
+
+ True if the vertical position (above ground) estimate is good
+
+
+
+ True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate
+
+
+
+ True if the EKF has detected a GPS glitch
+
+
+
+
+
+
+ throttle as a percentage from 0 ~ 100
+
+
+
+ throttle as an absolute PWM value (normally in range of 1000~2000)
+
+
+
+ throttle pass-through from pilot's transmitter
+
+
+
+
+
+
+ ignore altitude field
+
+
+ ignore hdop field
+
+
+ ignore vdop field
+
+
+ ignore horizontal velocity field (vn and ve)
+
+
+ ignore vertical velocity field (vd)
+
+
+ ignore speed accuracy field
+
+
+ ignore horizontal accuracy field
+
+
+ ignore vertical accuracy field
+
+
+
+ Possible actions an aircraft can take to avoid a collision.
+
+ Ignore any potential collisions
+
+
+ Report potential collision
+
+
+ Ascend or Descend to avoid thread
+
+
+ Ascend or Descend to avoid thread
+
+
+ Aircraft to move perpendicular to the collision's velocity vector
+
+
+ Aircraft to fly directly back to its launch point
+
+
+ Aircraft to stop in place
+
+
+
+ Aircraft-rated danger from this threat.
+
+ Not a threat
+
+
+ Craft is mildly concerned about this threat
+
+
+ Craft is panicing, and may take actions to avoid threat
+
+
+
+ Source of information about this collision.
+
+ ID field references ADSB_VEHICLE packets
+
+
+ ID field references MAVLink SRC ID
+
+
+
+ Type of GPS fix
+
+ No GPS connected
+
+
+ No position information, GPS is connected
+
+
+ 2D position
+
+
+ 3D position
+
+
+ DGPS/SBAS aided 3D position
+
+
+ RTK float, 3D position
+
+
+ RTK Fixed, 3D position
+
+
+ Static fixed, typically used for base stations
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version
+
+
+ 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 wether the system is currently active or not and if an emergency occured. During the CRITICAL and EMERGENCY states the MAV is still considered to be active, but should start emergency procedures autonomously. After a failure occured it should first move from active to critical to allow manual intervention and then move to emergency after a certain timeout.
+ Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
+ Battery voltage, in millivolts (1 = 1 millivolt)
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery
+ Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+
+
+ The system time is the time of the master clock, typically the computer clock of the main onboard computer.
+ Timestamp of the master clock in microseconds since UNIX epoch.
+ Timestamp of the component clock since boot time in milliseconds.
+
+
+
+ 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.
+ Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009)
+ PING sequence
+ 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
+ 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system
+
+
+ Request to control this MAV
+ System the GCS requests control for
+ 0: request control of this MAV, 1: Release control of this MAV
+ 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.
+ 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 "!?,.-"
+
+
+ Accept / deny control of this MAV
+ ID of the GCS this message
+ 0: request control of this MAV, 1: Release control of this MAV
+ 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control
+
+
+ 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.
+ key
+
+
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with MAV_CMD_DO_SET_MODE INSTEAD. 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.
+ The system setting the mode
+ The new base mode
+ The new autopilot-specific mode. This field can be ignored by an autopilot.
+
+
+
+ Request to read the onboard parameter with the param_id string id. Onboard parameters are stored as key[const char*] -> 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 http://qgroundcontrol.org/parameter_interface for a full documentation of QGroundControl and IMU code.
+ System ID
+ Component 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
+ Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored)
+
+
+ Request all parameters of this component. After this request, all parameters are emitted.
+ System ID
+ Component ID
+
+
+ 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.
+ 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+ Total number of onboard parameters
+ Index of this onboard parameter
+
+
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default on system reboot. Send the ACTION MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM contents to EEPROM. IMPORTANT: The receiving component should acknowledge the new parameter value by sending a param_value message to all communication partners. This will also ensure that multiple GCS all have an up-to-date list of all parameters. If the sending GCS did not receive a PARAM_VALUE message within its timeout time, it should re-send the PARAM_SET message.
+ System ID
+ Component 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+
+
+ 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 for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude.
+ GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+
+
+ 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 for the global position estimate. This message can contain information for up to 20 satellites.
+ Number of satellites visible
+ Global satellite ID
+ 0: Satellite not used, 1: used for localization
+ Elevation (0: right on top of receiver, 90: on the horizon) of satellite
+ Direction of satellite, 0: 0 deg, 255: 360 deg.
+ Signal to noise ratio of satellite
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should always contain the true raw values without any scaling to allow data capture and system debugging.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X acceleration (raw)
+ Y acceleration (raw)
+ Z acceleration (raw)
+ Angular speed around X axis (raw)
+ Angular speed around Y axis (raw)
+ Angular speed around Z axis (raw)
+ X Magnetic field (raw)
+ Y Magnetic field (raw)
+ Z Magnetic field (raw)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Absolute pressure (raw)
+ Differential pressure 1 (raw, 0 if nonexistant)
+ Differential pressure 2 (raw, 0 if nonexistant)
+ Raw Temperature measurement (raw)
+
+
+ The pressure readings for the typical setup of one absolute and differential pressure sensor. The units are as specified in each field.
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right).
+ Timestamp (milliseconds since system boot)
+ Roll angle (rad, -pi..+pi)
+ Pitch angle (rad, -pi..+pi)
+ Yaw angle (rad, -pi..+pi)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion component 1, w (1 in null-rotation)
+ Quaternion component 2, x (0 in null-rotation)
+ Quaternion component 3, y (0 in null-rotation)
+ Quaternion component 4, z (0 in null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ X Speed
+ Y Speed
+ Z Speed
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well)
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude, positive north), expressed as m/s * 100
+ Ground Y Speed (Longitude, positive east), expressed as m/s * 100
+ Ground Z Speed (Altitude, positive down), expressed as m/s * 100
+ Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
+
+
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0, (100%) 10000. Channels that are inactive should be set to UINT16_MAX.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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%.
+ Timestamp (microseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos.
+ Servo output 1 value, in microseconds
+ Servo output 2 value, in microseconds
+ Servo output 3 value, in microseconds
+ Servo output 4 value, in microseconds
+ Servo output 5 value, in microseconds
+ Servo output 6 value, in microseconds
+ Servo output 7 value, in microseconds
+ Servo output 8 value, in microseconds
+
+ Servo output 9 value, in microseconds
+ Servo output 10 value, in microseconds
+ Servo output 11 value, in microseconds
+ Servo output 12 value, in microseconds
+ Servo output 13 value, in microseconds
+ Servo output 14 value, in microseconds
+ Servo output 15 value, in microseconds
+ Servo output 16 value, in microseconds
+
+
+ Request a partial list of mission items from the system/component. http://qgroundcontrol.org/mavlink/waypoint_protocol. If start and end index are the same, just send one waypoint.
+ System ID
+ Component ID
+ Start index, 0 by default
+ End index, -1 by default (-1: send list to end). Else a valid index of the list
+
+
+ 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!
+ System ID
+ Component ID
+ Start index, 0 by default and smaller / equal to the largest index of the current onboard list.
+ End index, equal or greater than start index.
+
+
+ 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). See also http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Sequence
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position, global: latitude
+ PARAM6 / y position: global: longitude
+ PARAM7 / z position: global: altitude (relative or absolute, depending on frame.
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ Set the mission item with sequence number seq as current item. This means that the MAV will continue to this mission item on the shortest path (not following the mission items in-between).
+ System ID
+ Component ID
+ Sequence
+
+
+ Message that announces the sequence number of the current active mission item. The MAV will fly towards this mission item.
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ 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 MISSIONs.
+ System ID
+ Component ID
+ Number of mission items in the sequence
+
+
+ Delete all mission items at once.
+ System ID
+ Component ID
+
+
+ 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 MISSION.
+ Sequence
+
+
+ Ack message during MISSION handling. The type field states if this message is a positive ack (type=0) or if an error happened (type=non-zero).
+ System ID
+ Component ID
+ See MAV_MISSION_RESULT enum
+
+
+ As local waypoints exist, the global MISSION reference allows to transform between the local coordinate frame and the global (GPS) coordinate frame. This can be necessary when e.g. in- and outdoor settings are connected and the MAV should move from in- to outdoor.
+ System ID
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Once the MAV sets a new GPS-Local correspondence, this message announces the origin (0,0,0) position
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Bind a RC channel to a parameter. The parameter should change accoding to the RC channel value.
+ System ID
+ Component 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
+ 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.
+ Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC.
+ Initial parameter value
+ Scale, maps the RC range [-1, 1] to a parameter value
+ Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation)
+ Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation)
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ 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/MISSIONs to accept and which to reject. Safety areas are often enforced by national or competition regulations.
+ System ID
+ Component ID
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ Read out the safety zone the MAV currently assumes.
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+ Attitude covariance
+
+
+ The state of the fixed wing navigation and position controller.
+ Current desired roll in degrees
+ Current desired pitch in degrees
+ Current desired heading in degrees
+ Bearing to current MISSION/target in degrees
+ Distance to active MISSION in meters
+ Current altitude error in meters
+ Current airspeed error in meters/second
+ Current crosstrack error on x-y plane in meters
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), above MSL
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s
+ Ground Y Speed (Longitude), expressed as m/s
+ Ground Z Speed (Altitude), expressed as m/s
+ Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.)
+
+
+ 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)
+ Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ X Position
+ Y Position
+ Z Position
+ X Speed (m/s)
+ Y Speed (m/s)
+ Z Speed (m/s)
+ X Acceleration (m/s^2)
+ Y Acceleration (m/s^2)
+ Z Acceleration (m/s^2)
+ Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.)
+
+
+ The PPM 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.
+ Timestamp (milliseconds since system boot)
+ 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.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+ The target requested to send the message stream.
+ The target requested to send the message stream.
+ The ID of the requested data stream
+ The requested message rate
+ 1 to start sending, 0 to stop sending.
+
+
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+ The ID of the requested data stream
+ The message rate
+ 1 stream is enabled, 0 stream is stopped.
+
+
+ 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 an buttons are also transmit as boolean values of their
+ The system to be controlled.
+ 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.
+ 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.
+ 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.
+ 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.
+ A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1.
+
+
+ The RAW values of the RC channels sent to the MAV to override info received from the RC radio. A value of UINT16_MAX means no change to that channel. A value of 0 means control of that channel should be released back to the RC radio. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.
+ System ID
+ Component ID
+ RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+
+
+ 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). See alsohttp://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4).
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Metrics typically displayed on a HUD for fixed wing aircraft
+ Current airspeed in m/s
+ Current ground speed in m/s
+ Current heading in degrees, in compass units (0..360, 0=north)
+ Current throttle setting in integer percent, 0 to 100
+ Current altitude (MSL), in meters
+ Current climb rate in meters/second
+
+
+ Message encoding a command with parameters as scaled integers. Scaling depends on the actual command value.
+ System ID
+ Component ID
+ The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Send a command with up to seven parameters to the MAV
+ System which should execute the command
+ Component which should execute the command, 0 for all components
+ Command ID, as defined by MAV_CMD enum.
+ 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)
+ Parameter 1, as defined by MAV_CMD enum.
+ Parameter 2, as defined by MAV_CMD enum.
+ Parameter 3, as defined by MAV_CMD enum.
+ Parameter 4, as defined by MAV_CMD enum.
+ Parameter 5, as defined by MAV_CMD enum.
+ Parameter 6, as defined by MAV_CMD enum.
+ Parameter 7, as defined by MAV_CMD enum.
+
+
+ Report status of a command. Includes feedback wether the command was executed.
+ Command ID, as defined by MAV_CMD enum.
+ See MAV_RESULT enum
+
+
+ Setpoint in roll, pitch, yaw and thrust from the operator
+ Timestamp in milliseconds since system boot
+ Desired roll rate in radians per second
+ Desired pitch rate in radians per second
+ Desired yaw rate in radians per second
+ Collective thrust, normalized to 0 .. 1
+ Flight mode switch position, 0.. 255
+ Override mode switch position, 0.. 255
+
+
+ Sets a desired vehicle attitude. Used by an external controller to command the vehicle (manual controller or other system).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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).
+ Timestamp in milliseconds 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.
+ System ID
+ Component ID
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds 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.
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ Roll
+ Pitch
+ Yaw
+
+
+ DEPRECATED PACKET! Suffers from missing airspeed fields and singularities due to Euler angles. Please use HIL_STATE_QUATERNION instead. Sent from simulation to autopilot. This packet is useful for high throughput applications such as hardware in the loop simulations.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Throttle 0 .. 1
+ Aux 1, -1 .. 1
+ Aux 2, -1 .. 1
+ Aux 3, -1 .. 1
+ Aux 4, -1 .. 1
+ System mode (MAV_MODE)
+ Navigation mode (MAV_NAV_MODE)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ RC channel 1 value, in microseconds
+ RC channel 2 value, in microseconds
+ RC channel 3 value, in microseconds
+ RC channel 4 value, in microseconds
+ RC channel 5 value, in microseconds
+ RC channel 6 value, in microseconds
+ RC channel 7 value, in microseconds
+ RC channel 8 value, in microseconds
+ RC channel 9 value, in microseconds
+ RC channel 10 value, in microseconds
+ RC channel 11 value, in microseconds
+ RC channel 12 value, in microseconds
+ Receive signal strength indicator, 0: 0%, 255: 100%
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs (replacement for HIL_CONTROLS)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.
+ System mode (MAV_MODE), includes arming state.
+ Flags as bitfield, reserved for future use.
+
+
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+ Timestamp (UNIX)
+ Sensor ID
+ Flow in pixels * 10 in x-sensor direction (dezi-pixels)
+ Flow in pixels * 10 in y-sensor direction (dezi-pixels)
+ Flow in meters in x-sensor direction, angular-speed compensated
+ Flow in meters in y-sensor direction, angular-speed compensated
+ Optical flow quality / confidence. 0: bad, 255: maximum quality
+ Ground distance in meters. Positive value: distance known. Negative value: Unknown distance
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X speed
+ Global Y speed
+ Global Z speed
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis (rad / sec)
+ Angular speed around Y axis (rad / sec)
+ Angular speed around Z axis (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature
+
+
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis in body frame (rad / sec)
+ Angular speed around Y axis in body frame (rad / sec)
+ Angular speed around Z axis in body frame (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure (airspeed) in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim.
+
+
+
+ Status of simulation environment, if used
+ True attitude quaternion component 1, w (1 in null-rotation)
+ True attitude quaternion component 2, x (0 in null-rotation)
+ True attitude quaternion component 3, y (0 in null-rotation)
+ True attitude quaternion component 4, z (0 in null-rotation)
+ Attitude roll expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees
+ Longitude in degrees
+ Altitude in meters
+ Horizontal position standard deviation
+ Vertical position standard deviation
+ True velocity in m/s in NORTH direction in earth-fixed NED frame
+ True velocity in m/s in EAST direction in earth-fixed NED frame
+ True velocity in m/s in DOWN direction in earth-fixed NED frame
+
+
+
+ Status generated by radio and injected into MAVLink stream.
+ Local signal strength
+ Remote signal strength
+ Remaining free buffer space in percent.
+ Background noise level
+ Remote background noise level
+ Receive errors
+ Count of error corrected packets
+
+
+ File transfer message
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ Time synchronization message.
+ Time sync timestamp 1
+ Time sync timestamp 2
+
+
+ Camera-IMU triggering and synchronisation message.
+ Timestamp for the image frame in microseconds
+ Image frame sequence
+
+
+ The global position, as returned by the Global Positioning System (GPS). This is
+ NOT the global position estimate of the sytem, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS ground speed (m/s * 100). If unknown, set to: 65535
+ GPS velocity in cm/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in cm/s in EAST direction in earth-fixed NED frame
+ GPS velocity in cm/s in DOWN direction in earth-fixed NED frame
+ Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535
+ Number of satellites visible. If unknown, set to 255
+
+
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ Indicated airspeed, expressed as m/s * 100
+ True airspeed, expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ The RAW IMU readings for secondary 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ Request a list of available logs. On some systems calling this may stop on-board logging until LOG_REQUEST_END is called.
+ System ID
+ Component ID
+ First log id (0 for first available)
+ Last log id (0xffff for last available)
+
+
+ Reply to LOG_REQUEST_LIST
+ Log id
+ Total number of logs
+ High log number
+ UTC timestamp of log in seconds since 1970, or 0 if not available
+ Size of the log (may be approximate) in bytes
+
+
+ Request a chunk of a log
+ System ID
+ Component ID
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes
+
+
+ Reply to LOG_REQUEST_DATA
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes (zero for end of log)
+ log data
+
+
+ Erase all logs
+ System ID
+ Component ID
+
+
+ Stop log transfer and resume normal logging
+ System ID
+ Component ID
+
+
+ data for injecting into the onboard GPS (used for DGPS)
+ System ID
+ Component ID
+ data length
+ raw data (110 is enough for 12 satellites of RTCMv2)
+
+
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+ Number of DGPS satellites
+ Age of DGPS info
+
+
+ Power supply status
+ 5V rail voltage in millivolts
+ servo rail voltage in millivolts
+ power supply status flags (see MAV_POWER_STATUS enum)
+
+
+ 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.
+ See SERIAL_CONTROL_DEV enum
+ See SERIAL_CONTROL_FLAG enum
+ Timeout for reply data in milliseconds
+ Baudrate of transfer. Zero means no change.
+ how many bytes in this transfer
+ serial data
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h)
+ total data size in bytes (set on ACK only)
+ Width of a matrix or image
+ Height of a matrix or image
+ number of packets beeing sent (set on ACK only)
+ payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only)
+ JPEG quality out of [1,100]
+
+
+ sequence number (starting with 0 on every transmission)
+ image data bytes
+
+
+ Time since system boot
+ Minimum distance the sensor can measure in centimeters
+ Maximum distance the sensor can measure in centimeters
+ Current distance reading
+ Type from MAV_DISTANCE_SENSOR enum.
+ Onboard ID of the sensor
+ Direction the sensor faces from MAV_SENSOR_ORIENTATION enum.
+ Measurement covariance in centimeters, 0 for unknown / invalid readings
+
+
+ Request for terrain data and terrain status
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
+
+
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the same as a lat/lon from a TERRAIN_REQUEST
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ bit within the terrain request mask
+ Terrain data in meters AMSL
+
+
+ Request that the vehicle report terrain height at the given location. Used by GCS to check if vehicle has all terrain data needed for a mission.
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+
+
+ Response from a TERRAIN_CHECK request
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+ grid spacing (zero if terrain at this location unavailable)
+ Terrain height in meters AMSL
+ Current vehicle height above lat/lon terrain height (meters)
+ Number of 4x4 terrain blocks waiting to be received or read from disk
+ Number of 4x4 terrain blocks in memory
+
+
+ Barometer readings for 2nd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ Motion capture attitude and position
+ Timestamp (micros since boot or Unix epoch)
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ X position in meters (NED)
+ Y position in meters (NED)
+ Z position in meters (NED)
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ System ID
+ Component ID
+ 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.
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ 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.
+
+
+ The current system altitude.
+ Timestamp (micros since boot or Unix epoch)
+ 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.
+ 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 AMSL by default and not the WGS84 altitude.
+ 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.
+ This is the altitude above the home position. It resets on each change of the current home position.
+ 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.
+ 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.
+
+
+ The autopilot is requesting a resource (file, binary, other type of data)
+ Request ID. This ID should be re-used when sending back URI contents
+ The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary
+ The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum)
+ The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream.
+ 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).
+
+
+ Barometer readings for 3rd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ current motion information from a designated system
+ Timestamp in milliseconds since system boot
+ bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3)
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ AMSL, in meters
+ target velocity (0,0,0) for unknown
+ linear target acceleration (0,0,0) for unknown
+ (1 0 0 0 for unknown)
+ (0 0 0 for unknown)
+ eph epv
+ button states or switches of a tracker device
+
+
+ The smoothed, monotonic system state used to feed the control loops of the system.
+ Timestamp (micros since boot or Unix epoch)
+ X acceleration in body frame
+ Y acceleration in body frame
+ Z acceleration in body frame
+ X velocity in body frame
+ Y velocity in body frame
+ Z velocity in body frame
+ X position in local frame
+ Y position in local frame
+ Z position in local frame
+ Airspeed, set to -1 if unknown
+ Variance of body velocity estimate
+ Variance in local position
+ The attitude, represented as Quaternion
+ Angular rate in roll axis
+ Angular rate in pitch axis
+ Angular rate in yaw axis
+
+
+ Battery information
+ Battery ID
+ Function of the battery
+ Type (chemistry) of the battery
+ Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature.
+ Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value.
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate
+ Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery
+
+
+ Version and capability of autopilot software
+ bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum)
+ Firmware version number
+ Middleware version number
+ Operating system version number
+ HW / board version (last 8 bytes should be silicon ID, if any)
+ 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.
+ 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.
+ 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.
+ ID of the board vendor
+ ID of the product
+ UID if provided by hardware
+
+
+ The location of a landing area captured from a downward facing camera
+ Timestamp (micros since boot or Unix epoch)
+ The ID of the target if multiple targets are present
+ MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc.
+ X-axis angular offset (in radians) of the target from the center of the image
+ Y-axis angular offset (in radians) of the target from the center of the image
+ Distance to the target from the vehicle in meters
+ Size in radians of target along x-axis
+ Size in radians of target along y-axis
+
+
+
+ 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 innovaton test ratios show the magnitude of the sensor innovation divided by the innovation check threshold. Under normal operation the innovaton 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.
+ Timestamp (micros since boot or Unix epoch)
+ Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS.
+ Velocity innovation test ratio
+ Horizontal position innovation test ratio
+ Vertical position innovation test ratio
+ Magnetometer innovation test ratio
+ Height above terrain innovation test ratio
+ True airspeed innovation test ratio
+ Horizontal position 1-STD accuracy relative to the EKF local origin (m)
+ Vertical position 1-STD accuracy relative to the EKF local origin (m)
+
+
+ Timestamp (micros since boot or Unix epoch)
+ Wind in X (NED) direction in m/s
+ Wind in Y (NED) direction in m/s
+ Wind in Z (NED) direction in m/s
+ Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate.
+ Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate.
+ AMSL altitude (m) this measurement was taken at
+ Horizontal speed 1-STD accuracy
+ Vertical speed 1-STD accuracy
+
+
+ GPS sensor input message. This is a raw sensor value sent by the GPS. This is NOT the global position estimate of the sytem.
+ Timestamp (micros since boot or Unix epoch)
+ ID of the GPS for multiple GPS inputs
+ Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided.
+ GPS time (milliseconds from start of GPS week)
+ GPS week number
+ 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in m (positive for up)
+ GPS HDOP horizontal dilution of position in m
+ GPS VDOP vertical dilution of position in m
+ GPS velocity in m/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in m/s in EAST direction in earth-fixed NED frame
+ GPS velocity in m/s in DOWN direction in earth-fixed NED frame
+ GPS speed accuracy in m/s
+ GPS horizontal accuracy in m
+ GPS vertical accuracy in m
+ Number of satellites visible.
+
+
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS (used for DGPS)
+ LSB: 1 means message is fragmented
+ data length
+ RTCM message (may be fragmented)
+
+
+ Vibration levels and accelerometer clipping
+ Timestamp (micros since boot or Unix epoch)
+ Vibration levels on X-axis
+ Vibration levels on Y-axis
+ Vibration levels on Z-axis
+ first accelerometer clipping count
+ second accelerometer clipping count
+ third accelerometer clipping count
+
+
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION command. The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. The position the system will return to and land on. 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. 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.
+ System ID.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ This interface replaces DATA_STREAM
+ The ID of the requested MAVLink message. v1.0 is limited to 254 messages.
+ The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent.
+
+
+ Provides state for additional features
+ The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration.
+ The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.
+
+
+ The location and information of an ADSB vehicle
+ ICAO address
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Type from ADSB_ALTITUDE_TYPE enum
+ Altitude(ASL) in millimeters
+ Course over ground in centidegrees
+ The horizontal velocity in centimeters/second
+ The vertical velocity in centimeters/second, positive is up
+ The callsign, 8+null
+ Type from ADSB_EMITTER_TYPE enum
+ Time since last communication in seconds
+ Flags to indicate various statuses including valid data fields
+ Squawk code
+
+
+ Information about a potential collision
+ Collision data source
+ Unique identifier, domain based on src field
+ Action that is being taken to avoid this collision
+ How concerned the aircraft is about this collision
+ Estimated time until collision occurs (seconds)
+ Closest vertical distance in meters between vehicle and object
+ Closest horizontal distance in meteres between vehicle and object
+
+
+ Message implementing parts of the V2 payload specs in V1 frames for transitional support.
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ 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/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.
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ 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.
+ Starting address of the debug variables
+ Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below
+ 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
+ Memory contents at specified address
+
+
+ Name
+ Timestamp
+ x
+ y
+ z
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Floating point value
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Signed integer value
+
+
+ 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).
+ Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY.
+ Status text message, without null termination character
+
+
+ Send a debug value. The index is used to discriminate between values. These values show up in the plot of QGroundControl as DEBUG N.
+ Timestamp (milliseconds since system boot)
+ index of debug variable
+ DEBUG value
+
+
+
+
+ Setup a MAVLink2 signing key. If called with secret_key of all zero and zero initial_timestamp will disable signing
+ system id of the target
+ component ID of the target
+ signing key
+ initial timestamp
+
+
+
+ Report button state change
+ Timestamp (milliseconds since system boot)
+ Time of last change of button state
+ Bitmap state of buttons
+
+
+
+ Control vehicle tone generation (buzzer)
+ System ID
+ Component ID
+ tune in board specific format
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.py
new file mode 100644
index 000000000..c8ebaa7f7
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.py
@@ -0,0 +1,13375 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: matrixpilot.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'matrixpilot'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_FLEXIFUNCTION_SET = 150
+MAVLINK_MSG_ID_FLEXIFUNCTION_READ_REQ = 151
+MAVLINK_MSG_ID_FLEXIFUNCTION_BUFFER_FUNCTION = 152
+MAVLINK_MSG_ID_FLEXIFUNCTION_BUFFER_FUNCTION_ACK = 153
+MAVLINK_MSG_ID_FLEXIFUNCTION_DIRECTORY = 155
+MAVLINK_MSG_ID_FLEXIFUNCTION_DIRECTORY_ACK = 156
+MAVLINK_MSG_ID_FLEXIFUNCTION_COMMAND = 157
+MAVLINK_MSG_ID_FLEXIFUNCTION_COMMAND_ACK = 158
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F2_A = 170
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F2_B = 171
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F4 = 172
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F5 = 173
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F6 = 174
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F7 = 175
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F8 = 176
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F13 = 177
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F14 = 178
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F15 = 179
+MAVLINK_MSG_ID_SERIAL_UDB_EXTRA_F16 = 180
+MAVLINK_MSG_ID_ALTITUDES = 181
+MAVLINK_MSG_ID_AIRSPEEDS = 182
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_flexifunction_set_message(MAVLink_message):
+ '''
+ Depreciated but used as a compiler flag. Do not remove
+ '''
+ id = MAVLINK_MSG_ID_FLEXIFUNCTION_SET
+ name = 'FLEXIFUNCTION_SET'
+ fieldnames = ['target_system', 'target_component']
+ ordered_fieldnames = [ 'target_system', 'target_component' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.xml
new file mode 100644
index 000000000..29d368d2a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/matrixpilot.xml
@@ -0,0 +1,284 @@
+
+
+ common.xml
+
+
+
+
+
+
+
+ Action required when performing CMD_PREFLIGHT_STORAGE
+
+ Read all parameters from storage
+
+
+ Write all parameters to storage
+
+
+ Clear all parameters in storage
+
+
+ Read specific parameters from storage
+
+
+ Write specific parameters to storage
+
+
+ Clear specific parameters in storage
+
+
+ do nothing
+
+
+
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Storage action: Action defined by MAV_PREFLIGHT_STORAGE_ACTION_ADVANCED
+ Storage area as defined by parameter database
+ Storage flags as defined by parameter database
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+
+
+
+ Depreciated but used as a compiler flag. Do not remove
+ System ID
+ Component ID
+
+
+ Reqest reading of flexifunction data
+ System ID
+ Component ID
+ Type of flexifunction data requested
+ index into data where needed
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ Total count of functions
+ Address in the flexifunction data, Set to 0xFFFF to use address in target memory
+ Size of the
+ Settings data
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ Settings data
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ Flexifunction command type
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ Command acknowledged
+ result of acknowledge
+
+
+ Backwards compatible MAVLink version of SERIAL_UDB_EXTRA - F2: Format Part A
+ Serial UDB Extra Time
+ Serial UDB Extra Status
+ Serial UDB Extra Latitude
+ Serial UDB Extra Longitude
+ Serial UDB Extra Altitude
+ Serial UDB Extra Waypoint Index
+ Serial UDB Extra Rmat 0
+ Serial UDB Extra Rmat 1
+ Serial UDB Extra Rmat 2
+ Serial UDB Extra Rmat 3
+ Serial UDB Extra Rmat 4
+ Serial UDB Extra Rmat 5
+ Serial UDB Extra Rmat 6
+ Serial UDB Extra Rmat 7
+ Serial UDB Extra Rmat 8
+ Serial UDB Extra GPS Course Over Ground
+ Serial UDB Extra Speed Over Ground
+ Serial UDB Extra CPU Load
+ Serial UDB Extra Voltage in MilliVolts
+ Serial UDB Extra 3D IMU Air Speed
+ Serial UDB Extra Estimated Wind 0
+ Serial UDB Extra Estimated Wind 1
+ Serial UDB Extra Estimated Wind 2
+ Serial UDB Extra Magnetic Field Earth 0
+ Serial UDB Extra Magnetic Field Earth 1
+ Serial UDB Extra Magnetic Field Earth 2
+ Serial UDB Extra Number of Sattelites in View
+ Serial UDB Extra GPS Horizontal Dilution of Precision
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA - F2: Part B
+ Serial UDB Extra Time
+ Serial UDB Extra PWM Input Channel 1
+ Serial UDB Extra PWM Input Channel 2
+ Serial UDB Extra PWM Input Channel 3
+ Serial UDB Extra PWM Input Channel 4
+ Serial UDB Extra PWM Input Channel 5
+ Serial UDB Extra PWM Input Channel 6
+ Serial UDB Extra PWM Input Channel 7
+ Serial UDB Extra PWM Input Channel 8
+ Serial UDB Extra PWM Input Channel 9
+ Serial UDB Extra PWM Input Channel 10
+ Serial UDB Extra PWM Output Channel 1
+ Serial UDB Extra PWM Output Channel 2
+ Serial UDB Extra PWM Output Channel 3
+ Serial UDB Extra PWM Output Channel 4
+ Serial UDB Extra PWM Output Channel 5
+ Serial UDB Extra PWM Output Channel 6
+ Serial UDB Extra PWM Output Channel 7
+ Serial UDB Extra PWM Output Channel 8
+ Serial UDB Extra PWM Output Channel 9
+ Serial UDB Extra PWM Output Channel 10
+ Serial UDB Extra IMU Location X
+ Serial UDB Extra IMU Location Y
+ Serial UDB Extra IMU Location Z
+ Serial UDB Extra Status Flags
+ Serial UDB Extra Oscillator Failure Count
+ Serial UDB Extra IMU Velocity X
+ Serial UDB Extra IMU Velocity Y
+ Serial UDB Extra IMU Velocity Z
+ Serial UDB Extra Current Waypoint Goal X
+ Serial UDB Extra Current Waypoint Goal Y
+ Serial UDB Extra Current Waypoint Goal Z
+ Serial UDB Extra Stack Memory Free
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F4: format
+ Serial UDB Extra Roll Stabilization with Ailerons Enabled
+ Serial UDB Extra Roll Stabilization with Rudder Enabled
+ Serial UDB Extra Pitch Stabilization Enabled
+ Serial UDB Extra Yaw Stabilization using Rudder Enabled
+ Serial UDB Extra Yaw Stabilization using Ailerons Enabled
+ Serial UDB Extra Navigation with Ailerons Enabled
+ Serial UDB Extra Navigation with Rudder Enabled
+ Serial UDB Extra Type of Alitude Hold when in Stabilized Mode
+ Serial UDB Extra Type of Alitude Hold when in Waypoint Mode
+ Serial UDB Extra Firmware racing mode enabled
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F5: format
+ Serial UDB YAWKP_AILERON Gain for Proporional control of navigation
+ Serial UDB YAWKD_AILERON Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD Gain for Rate control of roll stabilization
+ YAW_STABILIZATION_AILERON Proportional control
+ Gain For Boosting Manual Aileron control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F6: format
+ Serial UDB Extra PITCHGAIN Proportional Control
+ Serial UDB Extra Pitch Rate Control
+ Serial UDB Extra Rudder to Elevator Mix
+ Serial UDB Extra Roll to Elevator Mix
+ Gain For Boosting Manual Elevator control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F7: format
+ Serial UDB YAWKP_RUDDER Gain for Proporional control of navigation
+ Serial UDB YAWKD_RUDDER Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP_RUDDER Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD_RUDDER Gain for Rate control of roll stabilization
+ SERIAL UDB EXTRA Rudder Boost Gain to Manual Control when stabilized
+ Serial UDB Extra Return To Landing - Angle to Pitch Plane Down
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F8: format
+ Serial UDB Extra HEIGHT_TARGET_MAX
+ Serial UDB Extra HEIGHT_TARGET_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_MIN
+ Serial UDB Extra ALT_HOLD_PITCH_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_HIGH
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F13: format
+ Serial UDB Extra GPS Week Number
+ Serial UDB Extra MP Origin Latitude
+ Serial UDB Extra MP Origin Longitude
+ Serial UDB Extra MP Origin Altitude Above Sea Level
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F14: format
+ Serial UDB Extra Wind Estimation Enabled
+ Serial UDB Extra Type of GPS Unit
+ Serial UDB Extra Dead Reckoning Enabled
+ Serial UDB Extra Type of UDB Hardware
+ Serial UDB Extra Type of Airframe
+ Serial UDB Extra Reboot Regitster of DSPIC
+ Serial UDB Extra Last dspic Trap Flags
+ Serial UDB Extra Type Program Address of Last Trap
+ Serial UDB Extra Number of Ocillator Failures
+ Serial UDB Extra UDB Internal Clock Configuration
+ Serial UDB Extra Type of Flight Plan
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F15 and F16: format
+ Serial UDB Extra Model Name Of Vehicle
+ Serial UDB Extra Registraton Number of Vehicle
+
+
+ Serial UDB Extra Name of Expected Lead Pilot
+ Serial UDB Extra URL of Lead Pilot or Team
+
+
+ The altitude measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ GPS altitude in meters, expressed as * 1000 (millimeters), above MSL
+ IMU altitude above ground in meters, expressed as * 1000 (millimeters)
+ barometeric altitude above ground in meters, expressed as * 1000 (millimeters)
+ Optical flow altitude above ground in meters, expressed as * 1000 (millimeters)
+ Rangefinder Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Extra altitude above ground in meters, expressed as * 1000 (millimeters)
+
+
+ The airspeed measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ Airspeed estimate from IMU, cm/s
+ Pitot measured forward airpseed, cm/s
+ Hot wire anenometer measured airspeed, cm/s
+ Ultrasonic measured airspeed, cm/s
+ Angle of attack sensor, degrees * 10
+ Yaw angle sensor, degrees * 10
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/minimal.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/minimal.py
new file mode 100644
index 000000000..78022c3ac
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/minimal.py
@@ -0,0 +1,822 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: minimal.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'minimal'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+ 2
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ PIXHAWK autopilot, http://pixhawk.ethz.ch
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Octorotor
+
+
+ Flapping wing
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAGS ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.py
new file mode 100644
index 000000000..d86b4502a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.py
@@ -0,0 +1,12261 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: paparazzi.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'paparazzi'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_SCRIPT_ITEM = 180
+MAVLINK_MSG_ID_SCRIPT_REQUEST = 181
+MAVLINK_MSG_ID_SCRIPT_REQUEST_LIST = 182
+MAVLINK_MSG_ID_SCRIPT_COUNT = 183
+MAVLINK_MSG_ID_SCRIPT_CURRENT = 184
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_script_item_message(MAVLink_message):
+ '''
+ Message encoding a mission script item. This message is
+ emitted upon a request for the next script item.
+ '''
+ id = MAVLINK_MSG_ID_SCRIPT_ITEM
+ name = 'SCRIPT_ITEM'
+ fieldnames = ['target_system', 'target_component', 'seq', 'name']
+ ordered_fieldnames = [ 'seq', 'target_system', 'target_component', 'name' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.xml
new file mode 100755
index 000000000..220007558
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/paparazzi.xml
@@ -0,0 +1,38 @@
+
+
+ common.xml
+ 3
+
+
+
+
+
+ Message encoding a mission script item. This message is emitted upon a request for the next script item.
+ System ID
+ Component ID
+ Sequence
+ The name of the mission script, NULL terminated.
+
+
+ Request script item with the sequence number seq. The response of the system to this message should be a SCRIPT_ITEM message.
+ System ID
+ Component ID
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ This message is emitted as response to SCRIPT_REQUEST_LIST by the MAV to get the number of mission scripts.
+ System ID
+ Component ID
+ Number of script items in the sequence
+
+
+ This message informs about the currently active SCRIPT.
+ Active Sequence
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.py
new file mode 100644
index 000000000..793003102
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.py
@@ -0,0 +1,12438 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: python_array_test.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'python_array_test'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_ARRAY_TEST_0 = 150
+MAVLINK_MSG_ID_ARRAY_TEST_1 = 151
+MAVLINK_MSG_ID_ARRAY_TEST_3 = 153
+MAVLINK_MSG_ID_ARRAY_TEST_4 = 154
+MAVLINK_MSG_ID_ARRAY_TEST_5 = 155
+MAVLINK_MSG_ID_ARRAY_TEST_6 = 156
+MAVLINK_MSG_ID_ARRAY_TEST_7 = 157
+MAVLINK_MSG_ID_ARRAY_TEST_8 = 158
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_array_test_0_message(MAVLink_message):
+ '''
+ Array test #0.
+ '''
+ id = MAVLINK_MSG_ID_ARRAY_TEST_0
+ name = 'ARRAY_TEST_0'
+ fieldnames = ['v1', 'ar_i8', 'ar_u8', 'ar_u16', 'ar_u32']
+ ordered_fieldnames = [ 'ar_u32', 'ar_u16', 'v1', 'ar_i8', 'ar_u8' ]
+ format = '<4I4HB4b4B'
+ native_format = bytearray('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.xml
new file mode 100644
index 000000000..f230d0126
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/python_array_test.xml
@@ -0,0 +1,67 @@
+
+
+
+common.xml
+
+
+ Array test #0.
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #1.
+ Value array
+
+
+ Array test #3.
+ Stub field
+ Value array
+
+
+ Array test #4.
+ Value array
+ Stub field
+
+
+ Array test #5.
+ Value array
+ Value array
+
+
+ Array test #6.
+ Stub field
+ Stub field
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #7.
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #8.
+ Stub field
+ Value array
+ Value array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.py
new file mode 100644
index 000000000..5440f91e9
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.py
@@ -0,0 +1,13207 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: slugs.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'slugs'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_DO_NOTHING = 10001 # Does nothing.
+enums['MAV_CMD'][10001] = EnumEntry('MAV_CMD_DO_NOTHING', '''Does nothing.''')
+enums['MAV_CMD'][10001].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_RETURN_TO_BASE = 10011 # Return vehicle to base.
+enums['MAV_CMD'][10011] = EnumEntry('MAV_CMD_RETURN_TO_BASE', '''Return vehicle to base.''')
+enums['MAV_CMD'][10011].param[1] = '''0: return to base, 1: track mobile base'''
+MAV_CMD_STOP_RETURN_TO_BASE = 10012 # Stops the vehicle from returning to base and resumes flight.
+enums['MAV_CMD'][10012] = EnumEntry('MAV_CMD_STOP_RETURN_TO_BASE', '''Stops the vehicle from returning to base and resumes flight. ''')
+MAV_CMD_TURN_LIGHT = 10013 # Turns the vehicle's visible or infrared lights on or off.
+enums['MAV_CMD'][10013] = EnumEntry('MAV_CMD_TURN_LIGHT', '''Turns the vehicle's visible or infrared lights on or off.''')
+enums['MAV_CMD'][10013].param[1] = '''0: visible lights, 1: infrared lights'''
+enums['MAV_CMD'][10013].param[2] = '''0: turn on, 1: turn off'''
+MAV_CMD_GET_MID_LEVEL_COMMANDS = 10014 # Requests vehicle to send current mid-level commands to ground station.
+enums['MAV_CMD'][10014] = EnumEntry('MAV_CMD_GET_MID_LEVEL_COMMANDS', '''Requests vehicle to send current mid-level commands to ground station.''')
+MAV_CMD_MIDLEVEL_STORAGE = 10015 # Requests storage of mid-level commands.
+enums['MAV_CMD'][10015] = EnumEntry('MAV_CMD_MIDLEVEL_STORAGE', '''Requests storage of mid-level commands.''')
+enums['MAV_CMD'][10015].param[1] = '''Mid-level command storage: 0: read from flash/EEPROM, 1: write to flash/EEPROM'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# SLUGS_MODE
+enums['SLUGS_MODE'] = {}
+SLUGS_MODE_NONE = 0 # No change to SLUGS mode.
+enums['SLUGS_MODE'][0] = EnumEntry('SLUGS_MODE_NONE', '''No change to SLUGS mode.''')
+SLUGS_MODE_LIFTOFF = 1 # Vehicle is in liftoff mode.
+enums['SLUGS_MODE'][1] = EnumEntry('SLUGS_MODE_LIFTOFF', '''Vehicle is in liftoff mode.''')
+SLUGS_MODE_PASSTHROUGH = 2 # Vehicle is in passthrough mode, being controlled by a pilot.
+enums['SLUGS_MODE'][2] = EnumEntry('SLUGS_MODE_PASSTHROUGH', '''Vehicle is in passthrough mode, being controlled by a pilot.''')
+SLUGS_MODE_WAYPOINT = 3 # Vehicle is in waypoint mode, navigating to waypoints.
+enums['SLUGS_MODE'][3] = EnumEntry('SLUGS_MODE_WAYPOINT', '''Vehicle is in waypoint mode, navigating to waypoints.''')
+SLUGS_MODE_MID_LEVEL = 4 # Vehicle is executing mid-level commands.
+enums['SLUGS_MODE'][4] = EnumEntry('SLUGS_MODE_MID_LEVEL', '''Vehicle is executing mid-level commands.''')
+SLUGS_MODE_RETURNING = 5 # Vehicle is returning to the home location.
+enums['SLUGS_MODE'][5] = EnumEntry('SLUGS_MODE_RETURNING', '''Vehicle is returning to the home location.''')
+SLUGS_MODE_LANDING = 6 # Vehicle is landing.
+enums['SLUGS_MODE'][6] = EnumEntry('SLUGS_MODE_LANDING', '''Vehicle is landing.''')
+SLUGS_MODE_LOST = 7 # Lost connection with vehicle.
+enums['SLUGS_MODE'][7] = EnumEntry('SLUGS_MODE_LOST', '''Lost connection with vehicle.''')
+SLUGS_MODE_SELECTIVE_PASSTHROUGH = 8 # Vehicle is in selective passthrough mode, where selected surfaces are
+ # being manually controlled.
+enums['SLUGS_MODE'][8] = EnumEntry('SLUGS_MODE_SELECTIVE_PASSTHROUGH', '''Vehicle is in selective passthrough mode, where selected surfaces are being manually controlled.''')
+SLUGS_MODE_ISR = 9 # Vehicle is in ISR mode, performing reconaissance at a point specified
+ # by ISR_LOCATION message.
+enums['SLUGS_MODE'][9] = EnumEntry('SLUGS_MODE_ISR', '''Vehicle is in ISR mode, performing reconaissance at a point specified by ISR_LOCATION message.''')
+SLUGS_MODE_LINE_PATROL = 10 # Vehicle is patrolling along lines between waypoints.
+enums['SLUGS_MODE'][10] = EnumEntry('SLUGS_MODE_LINE_PATROL', '''Vehicle is patrolling along lines between waypoints.''')
+SLUGS_MODE_GROUNDED = 11 # Vehicle is grounded or an error has occurred.
+enums['SLUGS_MODE'][11] = EnumEntry('SLUGS_MODE_GROUNDED', '''Vehicle is grounded or an error has occurred.''')
+SLUGS_MODE_ENUM_END = 12 #
+enums['SLUGS_MODE'][12] = EnumEntry('SLUGS_MODE_ENUM_END', '''''')
+
+# CONTROL_SURFACE_FLAG
+enums['CONTROL_SURFACE_FLAG'] = {}
+CONTROL_SURFACE_FLAG_RIGHT_FLAP = 1 # 0b00000001 Right flap control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][1] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_FLAP', '''0b00000001 Right flap control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_FLAP = 2 # 0b00000010 Left flap control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][2] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_FLAP', '''0b00000010 Left flap control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RIGHT_ELEVATOR = 4 # 0b00000100 Right elevator control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][4] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_ELEVATOR', '''0b00000100 Right elevator control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_ELEVATOR = 8 # 0b00001000 Left elevator control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][8] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_ELEVATOR', '''0b00001000 Left elevator control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RUDDER = 16 # 0b00010000 Rudder control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][16] = EnumEntry('CONTROL_SURFACE_FLAG_RUDDER', '''0b00010000 Rudder control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_RIGHT_AILERON = 32 # 0b00100000 Right aileron control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][32] = EnumEntry('CONTROL_SURFACE_FLAG_RIGHT_AILERON', '''0b00100000 Right aileron control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_LEFT_AILERON = 64 # 0b01000000 Left aileron control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][64] = EnumEntry('CONTROL_SURFACE_FLAG_LEFT_AILERON', '''0b01000000 Left aileron control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_THROTTLE = 128 # 0b10000000 Throttle control passes through to pilot console.
+enums['CONTROL_SURFACE_FLAG'][128] = EnumEntry('CONTROL_SURFACE_FLAG_THROTTLE', '''0b10000000 Throttle control passes through to pilot console.''')
+CONTROL_SURFACE_FLAG_ENUM_END = 129 #
+enums['CONTROL_SURFACE_FLAG'][129] = EnumEntry('CONTROL_SURFACE_FLAG_ENUM_END', '''''')
+
+# MAV_AUTOPILOT
+enums['MAV_AUTOPILOT'] = {}
+MAV_AUTOPILOT_GENERIC = 0 # Generic autopilot, full support for everything
+enums['MAV_AUTOPILOT'][0] = EnumEntry('MAV_AUTOPILOT_GENERIC', '''Generic autopilot, full support for everything''')
+MAV_AUTOPILOT_RESERVED = 1 # Reserved for future use.
+enums['MAV_AUTOPILOT'][1] = EnumEntry('MAV_AUTOPILOT_RESERVED', '''Reserved for future use.''')
+MAV_AUTOPILOT_SLUGS = 2 # SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+enums['MAV_AUTOPILOT'][2] = EnumEntry('MAV_AUTOPILOT_SLUGS', '''SLUGS autopilot, http://slugsuav.soe.ucsc.edu''')
+MAV_AUTOPILOT_ARDUPILOTMEGA = 3 # ArduPilotMega / ArduCopter, http://diydrones.com
+enums['MAV_AUTOPILOT'][3] = EnumEntry('MAV_AUTOPILOT_ARDUPILOTMEGA', '''ArduPilotMega / ArduCopter, http://diydrones.com''')
+MAV_AUTOPILOT_OPENPILOT = 4 # OpenPilot, http://openpilot.org
+enums['MAV_AUTOPILOT'][4] = EnumEntry('MAV_AUTOPILOT_OPENPILOT', '''OpenPilot, http://openpilot.org''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 # Generic autopilot only supporting simple waypoints
+enums['MAV_AUTOPILOT'][5] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY', '''Generic autopilot only supporting simple waypoints''')
+MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 # Generic autopilot supporting waypoints and other simple navigation
+ # commands
+enums['MAV_AUTOPILOT'][6] = EnumEntry('MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY', '''Generic autopilot supporting waypoints and other simple navigation commands''')
+MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 # Generic autopilot supporting the full mission command set
+enums['MAV_AUTOPILOT'][7] = EnumEntry('MAV_AUTOPILOT_GENERIC_MISSION_FULL', '''Generic autopilot supporting the full mission command set''')
+MAV_AUTOPILOT_INVALID = 8 # No valid autopilot, e.g. a GCS or other MAVLink component
+enums['MAV_AUTOPILOT'][8] = EnumEntry('MAV_AUTOPILOT_INVALID', '''No valid autopilot, e.g. a GCS or other MAVLink component''')
+MAV_AUTOPILOT_PPZ = 9 # PPZ UAV - http://nongnu.org/paparazzi
+enums['MAV_AUTOPILOT'][9] = EnumEntry('MAV_AUTOPILOT_PPZ', '''PPZ UAV - http://nongnu.org/paparazzi''')
+MAV_AUTOPILOT_UDB = 10 # UAV Dev Board
+enums['MAV_AUTOPILOT'][10] = EnumEntry('MAV_AUTOPILOT_UDB', '''UAV Dev Board''')
+MAV_AUTOPILOT_FP = 11 # FlexiPilot
+enums['MAV_AUTOPILOT'][11] = EnumEntry('MAV_AUTOPILOT_FP', '''FlexiPilot''')
+MAV_AUTOPILOT_PX4 = 12 # PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+enums['MAV_AUTOPILOT'][12] = EnumEntry('MAV_AUTOPILOT_PX4', '''PX4 Autopilot - http://pixhawk.ethz.ch/px4/''')
+MAV_AUTOPILOT_SMACCMPILOT = 13 # SMACCMPilot - http://smaccmpilot.org
+enums['MAV_AUTOPILOT'][13] = EnumEntry('MAV_AUTOPILOT_SMACCMPILOT', '''SMACCMPilot - http://smaccmpilot.org''')
+MAV_AUTOPILOT_AUTOQUAD = 14 # AutoQuad -- http://autoquad.org
+enums['MAV_AUTOPILOT'][14] = EnumEntry('MAV_AUTOPILOT_AUTOQUAD', '''AutoQuad -- http://autoquad.org''')
+MAV_AUTOPILOT_ARMAZILA = 15 # Armazila -- http://armazila.com
+enums['MAV_AUTOPILOT'][15] = EnumEntry('MAV_AUTOPILOT_ARMAZILA', '''Armazila -- http://armazila.com''')
+MAV_AUTOPILOT_AEROB = 16 # Aerob -- http://aerob.ru
+enums['MAV_AUTOPILOT'][16] = EnumEntry('MAV_AUTOPILOT_AEROB', '''Aerob -- http://aerob.ru''')
+MAV_AUTOPILOT_ASLUAV = 17 # ASLUAV autopilot -- http://www.asl.ethz.ch
+enums['MAV_AUTOPILOT'][17] = EnumEntry('MAV_AUTOPILOT_ASLUAV', '''ASLUAV autopilot -- http://www.asl.ethz.ch''')
+MAV_AUTOPILOT_ENUM_END = 18 #
+enums['MAV_AUTOPILOT'][18] = EnumEntry('MAV_AUTOPILOT_ENUM_END', '''''')
+
+# MAV_TYPE
+enums['MAV_TYPE'] = {}
+MAV_TYPE_GENERIC = 0 # Generic micro air vehicle.
+enums['MAV_TYPE'][0] = EnumEntry('MAV_TYPE_GENERIC', '''Generic micro air vehicle.''')
+MAV_TYPE_FIXED_WING = 1 # Fixed wing aircraft.
+enums['MAV_TYPE'][1] = EnumEntry('MAV_TYPE_FIXED_WING', '''Fixed wing aircraft.''')
+MAV_TYPE_QUADROTOR = 2 # Quadrotor
+enums['MAV_TYPE'][2] = EnumEntry('MAV_TYPE_QUADROTOR', '''Quadrotor''')
+MAV_TYPE_COAXIAL = 3 # Coaxial helicopter
+enums['MAV_TYPE'][3] = EnumEntry('MAV_TYPE_COAXIAL', '''Coaxial helicopter''')
+MAV_TYPE_HELICOPTER = 4 # Normal helicopter with tail rotor.
+enums['MAV_TYPE'][4] = EnumEntry('MAV_TYPE_HELICOPTER', '''Normal helicopter with tail rotor.''')
+MAV_TYPE_ANTENNA_TRACKER = 5 # Ground installation
+enums['MAV_TYPE'][5] = EnumEntry('MAV_TYPE_ANTENNA_TRACKER', '''Ground installation''')
+MAV_TYPE_GCS = 6 # Operator control unit / ground control station
+enums['MAV_TYPE'][6] = EnumEntry('MAV_TYPE_GCS', '''Operator control unit / ground control station''')
+MAV_TYPE_AIRSHIP = 7 # Airship, controlled
+enums['MAV_TYPE'][7] = EnumEntry('MAV_TYPE_AIRSHIP', '''Airship, controlled''')
+MAV_TYPE_FREE_BALLOON = 8 # Free balloon, uncontrolled
+enums['MAV_TYPE'][8] = EnumEntry('MAV_TYPE_FREE_BALLOON', '''Free balloon, uncontrolled''')
+MAV_TYPE_ROCKET = 9 # Rocket
+enums['MAV_TYPE'][9] = EnumEntry('MAV_TYPE_ROCKET', '''Rocket''')
+MAV_TYPE_GROUND_ROVER = 10 # Ground rover
+enums['MAV_TYPE'][10] = EnumEntry('MAV_TYPE_GROUND_ROVER', '''Ground rover''')
+MAV_TYPE_SURFACE_BOAT = 11 # Surface vessel, boat, ship
+enums['MAV_TYPE'][11] = EnumEntry('MAV_TYPE_SURFACE_BOAT', '''Surface vessel, boat, ship''')
+MAV_TYPE_SUBMARINE = 12 # Submarine
+enums['MAV_TYPE'][12] = EnumEntry('MAV_TYPE_SUBMARINE', '''Submarine''')
+MAV_TYPE_HEXAROTOR = 13 # Hexarotor
+enums['MAV_TYPE'][13] = EnumEntry('MAV_TYPE_HEXAROTOR', '''Hexarotor''')
+MAV_TYPE_OCTOROTOR = 14 # Octorotor
+enums['MAV_TYPE'][14] = EnumEntry('MAV_TYPE_OCTOROTOR', '''Octorotor''')
+MAV_TYPE_TRICOPTER = 15 # Tricopter
+enums['MAV_TYPE'][15] = EnumEntry('MAV_TYPE_TRICOPTER', '''Tricopter''')
+MAV_TYPE_FLAPPING_WING = 16 # Flapping wing
+enums['MAV_TYPE'][16] = EnumEntry('MAV_TYPE_FLAPPING_WING', '''Flapping wing''')
+MAV_TYPE_KITE = 17 # Kite
+enums['MAV_TYPE'][17] = EnumEntry('MAV_TYPE_KITE', '''Kite''')
+MAV_TYPE_ONBOARD_CONTROLLER = 18 # Onboard companion controller
+enums['MAV_TYPE'][18] = EnumEntry('MAV_TYPE_ONBOARD_CONTROLLER', '''Onboard companion controller''')
+MAV_TYPE_VTOL_DUOROTOR = 19 # Two-rotor VTOL using control surfaces in vertical operation in
+ # addition. Tailsitter.
+enums['MAV_TYPE'][19] = EnumEntry('MAV_TYPE_VTOL_DUOROTOR', '''Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.''')
+MAV_TYPE_VTOL_QUADROTOR = 20 # Quad-rotor VTOL using a V-shaped quad config in vertical operation.
+ # Tailsitter.
+enums['MAV_TYPE'][20] = EnumEntry('MAV_TYPE_VTOL_QUADROTOR', '''Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.''')
+MAV_TYPE_VTOL_TILTROTOR = 21 # Tiltrotor VTOL
+enums['MAV_TYPE'][21] = EnumEntry('MAV_TYPE_VTOL_TILTROTOR', '''Tiltrotor VTOL''')
+MAV_TYPE_VTOL_RESERVED2 = 22 # VTOL reserved 2
+enums['MAV_TYPE'][22] = EnumEntry('MAV_TYPE_VTOL_RESERVED2', '''VTOL reserved 2''')
+MAV_TYPE_VTOL_RESERVED3 = 23 # VTOL reserved 3
+enums['MAV_TYPE'][23] = EnumEntry('MAV_TYPE_VTOL_RESERVED3', '''VTOL reserved 3''')
+MAV_TYPE_VTOL_RESERVED4 = 24 # VTOL reserved 4
+enums['MAV_TYPE'][24] = EnumEntry('MAV_TYPE_VTOL_RESERVED4', '''VTOL reserved 4''')
+MAV_TYPE_VTOL_RESERVED5 = 25 # VTOL reserved 5
+enums['MAV_TYPE'][25] = EnumEntry('MAV_TYPE_VTOL_RESERVED5', '''VTOL reserved 5''')
+MAV_TYPE_GIMBAL = 26 # Onboard gimbal
+enums['MAV_TYPE'][26] = EnumEntry('MAV_TYPE_GIMBAL', '''Onboard gimbal''')
+MAV_TYPE_ADSB = 27 # Onboard ADSB peripheral
+enums['MAV_TYPE'][27] = EnumEntry('MAV_TYPE_ADSB', '''Onboard ADSB peripheral''')
+MAV_TYPE_ENUM_END = 28 #
+enums['MAV_TYPE'][28] = EnumEntry('MAV_TYPE_ENUM_END', '''''')
+
+# FIRMWARE_VERSION_TYPE
+enums['FIRMWARE_VERSION_TYPE'] = {}
+FIRMWARE_VERSION_TYPE_DEV = 0 # development release
+enums['FIRMWARE_VERSION_TYPE'][0] = EnumEntry('FIRMWARE_VERSION_TYPE_DEV', '''development release''')
+FIRMWARE_VERSION_TYPE_ALPHA = 64 # alpha release
+enums['FIRMWARE_VERSION_TYPE'][64] = EnumEntry('FIRMWARE_VERSION_TYPE_ALPHA', '''alpha release''')
+FIRMWARE_VERSION_TYPE_BETA = 128 # beta release
+enums['FIRMWARE_VERSION_TYPE'][128] = EnumEntry('FIRMWARE_VERSION_TYPE_BETA', '''beta release''')
+FIRMWARE_VERSION_TYPE_RC = 192 # release candidate
+enums['FIRMWARE_VERSION_TYPE'][192] = EnumEntry('FIRMWARE_VERSION_TYPE_RC', '''release candidate''')
+FIRMWARE_VERSION_TYPE_OFFICIAL = 255 # official stable release
+enums['FIRMWARE_VERSION_TYPE'][255] = EnumEntry('FIRMWARE_VERSION_TYPE_OFFICIAL', '''official stable release''')
+FIRMWARE_VERSION_TYPE_ENUM_END = 256 #
+enums['FIRMWARE_VERSION_TYPE'][256] = EnumEntry('FIRMWARE_VERSION_TYPE_ENUM_END', '''''')
+
+# MAV_MODE_FLAG
+enums['MAV_MODE_FLAG'] = {}
+MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 # 0b00000001 Reserved for future use.
+enums['MAV_MODE_FLAG'][1] = EnumEntry('MAV_MODE_FLAG_CUSTOM_MODE_ENABLED', '''0b00000001 Reserved for future use.''')
+MAV_MODE_FLAG_TEST_ENABLED = 2 # 0b00000010 system has a test mode enabled. This flag is intended for
+ # temporary system tests and should not be
+ # used for stable implementations.
+enums['MAV_MODE_FLAG'][2] = EnumEntry('MAV_MODE_FLAG_TEST_ENABLED', '''0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.''')
+MAV_MODE_FLAG_AUTO_ENABLED = 4 # 0b00000100 autonomous mode enabled, system finds its own goal
+ # positions. Guided flag can be set or not,
+ # depends on the actual implementation.
+enums['MAV_MODE_FLAG'][4] = EnumEntry('MAV_MODE_FLAG_AUTO_ENABLED', '''0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.''')
+MAV_MODE_FLAG_GUIDED_ENABLED = 8 # 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+enums['MAV_MODE_FLAG'][8] = EnumEntry('MAV_MODE_FLAG_GUIDED_ENABLED', '''0b00001000 guided mode enabled, system flies MISSIONs / mission items.''')
+MAV_MODE_FLAG_STABILIZE_ENABLED = 16 # 0b00010000 system stabilizes electronically its attitude (and
+ # optionally position). It needs however
+ # further control inputs to move around.
+enums['MAV_MODE_FLAG'][16] = EnumEntry('MAV_MODE_FLAG_STABILIZE_ENABLED', '''0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.''')
+MAV_MODE_FLAG_HIL_ENABLED = 32 # 0b00100000 hardware in the loop simulation. All motors / actuators are
+ # blocked, but internal software is full
+ # operational.
+enums['MAV_MODE_FLAG'][32] = EnumEntry('MAV_MODE_FLAG_HIL_ENABLED', '''0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.''')
+MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 # 0b01000000 remote control input is enabled.
+enums['MAV_MODE_FLAG'][64] = EnumEntry('MAV_MODE_FLAG_MANUAL_INPUT_ENABLED', '''0b01000000 remote control input is enabled.''')
+MAV_MODE_FLAG_SAFETY_ARMED = 128 # 0b10000000 MAV safety set to armed. Motors are enabled / running / can
+ # start. Ready to fly.
+enums['MAV_MODE_FLAG'][128] = EnumEntry('MAV_MODE_FLAG_SAFETY_ARMED', '''0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.''')
+MAV_MODE_FLAG_ENUM_END = 129 #
+enums['MAV_MODE_FLAG'][129] = EnumEntry('MAV_MODE_FLAG_ENUM_END', '''''')
+
+# MAV_MODE_FLAG_DECODE_POSITION
+enums['MAV_MODE_FLAG_DECODE_POSITION'] = {}
+MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 # Eighth bit: 00000001
+enums['MAV_MODE_FLAG_DECODE_POSITION'][1] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE', '''Eighth bit: 00000001''')
+MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 # Seventh bit: 00000010
+enums['MAV_MODE_FLAG_DECODE_POSITION'][2] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_TEST', '''Seventh bit: 00000010''')
+MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 # Sixt bit: 00000100
+enums['MAV_MODE_FLAG_DECODE_POSITION'][4] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_AUTO', '''Sixt bit: 00000100''')
+MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 # Fifth bit: 00001000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][8] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_GUIDED', '''Fifth bit: 00001000''')
+MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 # Fourth bit: 00010000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][16] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_STABILIZE', '''Fourth bit: 00010000''')
+MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 # Third bit: 00100000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][32] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_HIL', '''Third bit: 00100000''')
+MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 # Second bit: 01000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][64] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_MANUAL', '''Second bit: 01000000''')
+MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 # First bit: 10000000
+enums['MAV_MODE_FLAG_DECODE_POSITION'][128] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_SAFETY', '''First bit: 10000000''')
+MAV_MODE_FLAG_DECODE_POSITION_ENUM_END = 129 #
+enums['MAV_MODE_FLAG_DECODE_POSITION'][129] = EnumEntry('MAV_MODE_FLAG_DECODE_POSITION_ENUM_END', '''''')
+
+# MAV_GOTO
+enums['MAV_GOTO'] = {}
+MAV_GOTO_DO_HOLD = 0 # Hold at the current position.
+enums['MAV_GOTO'][0] = EnumEntry('MAV_GOTO_DO_HOLD', '''Hold at the current position.''')
+MAV_GOTO_DO_CONTINUE = 1 # Continue with the next item in mission execution.
+enums['MAV_GOTO'][1] = EnumEntry('MAV_GOTO_DO_CONTINUE', '''Continue with the next item in mission execution.''')
+MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 # Hold at the current position of the system
+enums['MAV_GOTO'][2] = EnumEntry('MAV_GOTO_HOLD_AT_CURRENT_POSITION', '''Hold at the current position of the system''')
+MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 # Hold at the position specified in the parameters of the DO_HOLD action
+enums['MAV_GOTO'][3] = EnumEntry('MAV_GOTO_HOLD_AT_SPECIFIED_POSITION', '''Hold at the position specified in the parameters of the DO_HOLD action''')
+MAV_GOTO_ENUM_END = 4 #
+enums['MAV_GOTO'][4] = EnumEntry('MAV_GOTO_ENUM_END', '''''')
+
+# MAV_MODE
+enums['MAV_MODE'] = {}
+MAV_MODE_PREFLIGHT = 0 # System is not ready to fly, booting, calibrating, etc. No flag is set.
+enums['MAV_MODE'][0] = EnumEntry('MAV_MODE_PREFLIGHT', '''System is not ready to fly, booting, calibrating, etc. No flag is set.''')
+MAV_MODE_MANUAL_DISARMED = 64 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][64] = EnumEntry('MAV_MODE_MANUAL_DISARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_DISARMED = 66 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][66] = EnumEntry('MAV_MODE_TEST_DISARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_DISARMED = 80 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][80] = EnumEntry('MAV_MODE_STABILIZE_DISARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_DISARMED = 88 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][88] = EnumEntry('MAV_MODE_GUIDED_DISARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_DISARMED = 92 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][92] = EnumEntry('MAV_MODE_AUTO_DISARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_MANUAL_ARMED = 192 # System is allowed to be active, under manual (RC) control, no
+ # stabilization
+enums['MAV_MODE'][192] = EnumEntry('MAV_MODE_MANUAL_ARMED', '''System is allowed to be active, under manual (RC) control, no stabilization''')
+MAV_MODE_TEST_ARMED = 194 # UNDEFINED mode. This solely depends on the autopilot - use with
+ # caution, intended for developers only.
+enums['MAV_MODE'][194] = EnumEntry('MAV_MODE_TEST_ARMED', '''UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.''')
+MAV_MODE_STABILIZE_ARMED = 208 # System is allowed to be active, under assisted RC control.
+enums['MAV_MODE'][208] = EnumEntry('MAV_MODE_STABILIZE_ARMED', '''System is allowed to be active, under assisted RC control.''')
+MAV_MODE_GUIDED_ARMED = 216 # System is allowed to be active, under autonomous control, manual
+ # setpoint
+enums['MAV_MODE'][216] = EnumEntry('MAV_MODE_GUIDED_ARMED', '''System is allowed to be active, under autonomous control, manual setpoint''')
+MAV_MODE_AUTO_ARMED = 220 # System is allowed to be active, under autonomous control and
+ # navigation (the trajectory is decided
+ # onboard and not pre-programmed by MISSIONs)
+enums['MAV_MODE'][220] = EnumEntry('MAV_MODE_AUTO_ARMED', '''System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)''')
+MAV_MODE_ENUM_END = 221 #
+enums['MAV_MODE'][221] = EnumEntry('MAV_MODE_ENUM_END', '''''')
+
+# MAV_STATE
+enums['MAV_STATE'] = {}
+MAV_STATE_UNINIT = 0 # Uninitialized system, state is unknown.
+enums['MAV_STATE'][0] = EnumEntry('MAV_STATE_UNINIT', '''Uninitialized system, state is unknown.''')
+MAV_STATE_BOOT = 1 # System is booting up.
+enums['MAV_STATE'][1] = EnumEntry('MAV_STATE_BOOT', '''System is booting up.''')
+MAV_STATE_CALIBRATING = 2 # System is calibrating and not flight-ready.
+enums['MAV_STATE'][2] = EnumEntry('MAV_STATE_CALIBRATING', '''System is calibrating and not flight-ready.''')
+MAV_STATE_STANDBY = 3 # System is grounded and on standby. It can be launched any time.
+enums['MAV_STATE'][3] = EnumEntry('MAV_STATE_STANDBY', '''System is grounded and on standby. It can be launched any time.''')
+MAV_STATE_ACTIVE = 4 # System is active and might be already airborne. Motors are engaged.
+enums['MAV_STATE'][4] = EnumEntry('MAV_STATE_ACTIVE', '''System is active and might be already airborne. Motors are engaged.''')
+MAV_STATE_CRITICAL = 5 # System is in a non-normal flight mode. It can however still navigate.
+enums['MAV_STATE'][5] = EnumEntry('MAV_STATE_CRITICAL', '''System is in a non-normal flight mode. It can however still navigate.''')
+MAV_STATE_EMERGENCY = 6 # System is in a non-normal flight mode. It lost control over parts or
+ # over the whole airframe. It is in mayday and
+ # going down.
+enums['MAV_STATE'][6] = EnumEntry('MAV_STATE_EMERGENCY', '''System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.''')
+MAV_STATE_POWEROFF = 7 # System just initialized its power-down sequence, will shut down now.
+enums['MAV_STATE'][7] = EnumEntry('MAV_STATE_POWEROFF', '''System just initialized its power-down sequence, will shut down now.''')
+MAV_STATE_ENUM_END = 8 #
+enums['MAV_STATE'][8] = EnumEntry('MAV_STATE_ENUM_END', '''''')
+
+# MAV_COMPONENT
+enums['MAV_COMPONENT'] = {}
+MAV_COMP_ID_ALL = 0 #
+enums['MAV_COMPONENT'][0] = EnumEntry('MAV_COMP_ID_ALL', '''''')
+MAV_COMP_ID_CAMERA = 100 #
+enums['MAV_COMPONENT'][100] = EnumEntry('MAV_COMP_ID_CAMERA', '''''')
+MAV_COMP_ID_SERVO1 = 140 #
+enums['MAV_COMPONENT'][140] = EnumEntry('MAV_COMP_ID_SERVO1', '''''')
+MAV_COMP_ID_SERVO2 = 141 #
+enums['MAV_COMPONENT'][141] = EnumEntry('MAV_COMP_ID_SERVO2', '''''')
+MAV_COMP_ID_SERVO3 = 142 #
+enums['MAV_COMPONENT'][142] = EnumEntry('MAV_COMP_ID_SERVO3', '''''')
+MAV_COMP_ID_SERVO4 = 143 #
+enums['MAV_COMPONENT'][143] = EnumEntry('MAV_COMP_ID_SERVO4', '''''')
+MAV_COMP_ID_SERVO5 = 144 #
+enums['MAV_COMPONENT'][144] = EnumEntry('MAV_COMP_ID_SERVO5', '''''')
+MAV_COMP_ID_SERVO6 = 145 #
+enums['MAV_COMPONENT'][145] = EnumEntry('MAV_COMP_ID_SERVO6', '''''')
+MAV_COMP_ID_SERVO7 = 146 #
+enums['MAV_COMPONENT'][146] = EnumEntry('MAV_COMP_ID_SERVO7', '''''')
+MAV_COMP_ID_SERVO8 = 147 #
+enums['MAV_COMPONENT'][147] = EnumEntry('MAV_COMP_ID_SERVO8', '''''')
+MAV_COMP_ID_SERVO9 = 148 #
+enums['MAV_COMPONENT'][148] = EnumEntry('MAV_COMP_ID_SERVO9', '''''')
+MAV_COMP_ID_SERVO10 = 149 #
+enums['MAV_COMPONENT'][149] = EnumEntry('MAV_COMP_ID_SERVO10', '''''')
+MAV_COMP_ID_SERVO11 = 150 #
+enums['MAV_COMPONENT'][150] = EnumEntry('MAV_COMP_ID_SERVO11', '''''')
+MAV_COMP_ID_SERVO12 = 151 #
+enums['MAV_COMPONENT'][151] = EnumEntry('MAV_COMP_ID_SERVO12', '''''')
+MAV_COMP_ID_SERVO13 = 152 #
+enums['MAV_COMPONENT'][152] = EnumEntry('MAV_COMP_ID_SERVO13', '''''')
+MAV_COMP_ID_SERVO14 = 153 #
+enums['MAV_COMPONENT'][153] = EnumEntry('MAV_COMP_ID_SERVO14', '''''')
+MAV_COMP_ID_GIMBAL = 154 #
+enums['MAV_COMPONENT'][154] = EnumEntry('MAV_COMP_ID_GIMBAL', '''''')
+MAV_COMP_ID_LOG = 155 #
+enums['MAV_COMPONENT'][155] = EnumEntry('MAV_COMP_ID_LOG', '''''')
+MAV_COMP_ID_ADSB = 156 #
+enums['MAV_COMPONENT'][156] = EnumEntry('MAV_COMP_ID_ADSB', '''''')
+MAV_COMP_ID_OSD = 157 # On Screen Display (OSD) devices for video links
+enums['MAV_COMPONENT'][157] = EnumEntry('MAV_COMP_ID_OSD', '''On Screen Display (OSD) devices for video links''')
+MAV_COMP_ID_PERIPHERAL = 158 # Generic autopilot peripheral component ID. Meant for devices that do
+ # not implement the parameter sub-protocol
+enums['MAV_COMPONENT'][158] = EnumEntry('MAV_COMP_ID_PERIPHERAL', '''Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol''')
+MAV_COMP_ID_QX1_GIMBAL = 159 #
+enums['MAV_COMPONENT'][159] = EnumEntry('MAV_COMP_ID_QX1_GIMBAL', '''''')
+MAV_COMP_ID_MAPPER = 180 #
+enums['MAV_COMPONENT'][180] = EnumEntry('MAV_COMP_ID_MAPPER', '''''')
+MAV_COMP_ID_MISSIONPLANNER = 190 #
+enums['MAV_COMPONENT'][190] = EnumEntry('MAV_COMP_ID_MISSIONPLANNER', '''''')
+MAV_COMP_ID_PATHPLANNER = 195 #
+enums['MAV_COMPONENT'][195] = EnumEntry('MAV_COMP_ID_PATHPLANNER', '''''')
+MAV_COMP_ID_IMU = 200 #
+enums['MAV_COMPONENT'][200] = EnumEntry('MAV_COMP_ID_IMU', '''''')
+MAV_COMP_ID_IMU_2 = 201 #
+enums['MAV_COMPONENT'][201] = EnumEntry('MAV_COMP_ID_IMU_2', '''''')
+MAV_COMP_ID_IMU_3 = 202 #
+enums['MAV_COMPONENT'][202] = EnumEntry('MAV_COMP_ID_IMU_3', '''''')
+MAV_COMP_ID_GPS = 220 #
+enums['MAV_COMPONENT'][220] = EnumEntry('MAV_COMP_ID_GPS', '''''')
+MAV_COMP_ID_UDP_BRIDGE = 240 #
+enums['MAV_COMPONENT'][240] = EnumEntry('MAV_COMP_ID_UDP_BRIDGE', '''''')
+MAV_COMP_ID_UART_BRIDGE = 241 #
+enums['MAV_COMPONENT'][241] = EnumEntry('MAV_COMP_ID_UART_BRIDGE', '''''')
+MAV_COMP_ID_SYSTEM_CONTROL = 250 #
+enums['MAV_COMPONENT'][250] = EnumEntry('MAV_COMP_ID_SYSTEM_CONTROL', '''''')
+MAV_COMPONENT_ENUM_END = 251 #
+enums['MAV_COMPONENT'][251] = EnumEntry('MAV_COMPONENT_ENUM_END', '''''')
+
+# MAV_SYS_STATUS_SENSOR
+enums['MAV_SYS_STATUS_SENSOR'] = {}
+MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 # 0x01 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][1] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO', '''0x01 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 # 0x02 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][2] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL', '''0x02 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG = 4 # 0x04 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][4] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG', '''0x04 3D magnetometer''')
+MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 # 0x08 absolute pressure
+enums['MAV_SYS_STATUS_SENSOR'][8] = EnumEntry('MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE', '''0x08 absolute pressure''')
+MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 # 0x10 differential pressure
+enums['MAV_SYS_STATUS_SENSOR'][16] = EnumEntry('MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE', '''0x10 differential pressure''')
+MAV_SYS_STATUS_SENSOR_GPS = 32 # 0x20 GPS
+enums['MAV_SYS_STATUS_SENSOR'][32] = EnumEntry('MAV_SYS_STATUS_SENSOR_GPS', '''0x20 GPS''')
+MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 # 0x40 optical flow
+enums['MAV_SYS_STATUS_SENSOR'][64] = EnumEntry('MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW', '''0x40 optical flow''')
+MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 # 0x80 computer vision position
+enums['MAV_SYS_STATUS_SENSOR'][128] = EnumEntry('MAV_SYS_STATUS_SENSOR_VISION_POSITION', '''0x80 computer vision position''')
+MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 # 0x100 laser based position
+enums['MAV_SYS_STATUS_SENSOR'][256] = EnumEntry('MAV_SYS_STATUS_SENSOR_LASER_POSITION', '''0x100 laser based position''')
+MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 # 0x200 external ground truth (Vicon or Leica)
+enums['MAV_SYS_STATUS_SENSOR'][512] = EnumEntry('MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH', '''0x200 external ground truth (Vicon or Leica)''')
+MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 # 0x400 3D angular rate control
+enums['MAV_SYS_STATUS_SENSOR'][1024] = EnumEntry('MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL', '''0x400 3D angular rate control''')
+MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 # 0x800 attitude stabilization
+enums['MAV_SYS_STATUS_SENSOR'][2048] = EnumEntry('MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION', '''0x800 attitude stabilization''')
+MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 # 0x1000 yaw position
+enums['MAV_SYS_STATUS_SENSOR'][4096] = EnumEntry('MAV_SYS_STATUS_SENSOR_YAW_POSITION', '''0x1000 yaw position''')
+MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 # 0x2000 z/altitude control
+enums['MAV_SYS_STATUS_SENSOR'][8192] = EnumEntry('MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL', '''0x2000 z/altitude control''')
+MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 # 0x4000 x/y position control
+enums['MAV_SYS_STATUS_SENSOR'][16384] = EnumEntry('MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL', '''0x4000 x/y position control''')
+MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 # 0x8000 motor outputs / control
+enums['MAV_SYS_STATUS_SENSOR'][32768] = EnumEntry('MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS', '''0x8000 motor outputs / control''')
+MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 # 0x10000 rc receiver
+enums['MAV_SYS_STATUS_SENSOR'][65536] = EnumEntry('MAV_SYS_STATUS_SENSOR_RC_RECEIVER', '''0x10000 rc receiver''')
+MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 # 0x20000 2nd 3D gyro
+enums['MAV_SYS_STATUS_SENSOR'][131072] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_GYRO2', '''0x20000 2nd 3D gyro''')
+MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 # 0x40000 2nd 3D accelerometer
+enums['MAV_SYS_STATUS_SENSOR'][262144] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_ACCEL2', '''0x40000 2nd 3D accelerometer''')
+MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 # 0x80000 2nd 3D magnetometer
+enums['MAV_SYS_STATUS_SENSOR'][524288] = EnumEntry('MAV_SYS_STATUS_SENSOR_3D_MAG2', '''0x80000 2nd 3D magnetometer''')
+MAV_SYS_STATUS_GEOFENCE = 1048576 # 0x100000 geofence
+enums['MAV_SYS_STATUS_SENSOR'][1048576] = EnumEntry('MAV_SYS_STATUS_GEOFENCE', '''0x100000 geofence''')
+MAV_SYS_STATUS_AHRS = 2097152 # 0x200000 AHRS subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][2097152] = EnumEntry('MAV_SYS_STATUS_AHRS', '''0x200000 AHRS subsystem health''')
+MAV_SYS_STATUS_TERRAIN = 4194304 # 0x400000 Terrain subsystem health
+enums['MAV_SYS_STATUS_SENSOR'][4194304] = EnumEntry('MAV_SYS_STATUS_TERRAIN', '''0x400000 Terrain subsystem health''')
+MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 # 0x800000 Motors are reversed
+enums['MAV_SYS_STATUS_SENSOR'][8388608] = EnumEntry('MAV_SYS_STATUS_REVERSE_MOTOR', '''0x800000 Motors are reversed''')
+MAV_SYS_STATUS_LOGGING = 16777216 # 0x1000000 Logging
+enums['MAV_SYS_STATUS_SENSOR'][16777216] = EnumEntry('MAV_SYS_STATUS_LOGGING', '''0x1000000 Logging''')
+MAV_SYS_STATUS_SENSOR_ENUM_END = 16777217 #
+enums['MAV_SYS_STATUS_SENSOR'][16777217] = EnumEntry('MAV_SYS_STATUS_SENSOR_ENUM_END', '''''')
+
+# MAV_FRAME
+enums['MAV_FRAME'] = {}
+MAV_FRAME_GLOBAL = 0 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude, second value / y: longitude, third
+ # value / z: positive altitude over mean sea
+ # level (MSL)
+enums['MAV_FRAME'][0] = EnumEntry('MAV_FRAME_GLOBAL', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_LOCAL_NED = 1 # Local coordinate frame, Z-up (x: north, y: east, z: down).
+enums['MAV_FRAME'][1] = EnumEntry('MAV_FRAME_LOCAL_NED', '''Local coordinate frame, Z-up (x: north, y: east, z: down).''')
+MAV_FRAME_MISSION = 2 # NOT a coordinate frame, indicates a mission command.
+enums['MAV_FRAME'][2] = EnumEntry('MAV_FRAME_MISSION', '''NOT a coordinate frame, indicates a mission command.''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude, second
+ # value / y: longitude, third value / z:
+ # positive altitude with 0 being at the
+ # altitude of the home location.
+enums['MAV_FRAME'][3] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_ENU = 4 # Local coordinate frame, Z-down (x: east, y: north, z: up)
+enums['MAV_FRAME'][4] = EnumEntry('MAV_FRAME_LOCAL_ENU', '''Local coordinate frame, Z-down (x: east, y: north, z: up)''')
+MAV_FRAME_GLOBAL_INT = 5 # Global coordinate frame, WGS84 coordinate system. First value / x:
+ # latitude in degrees*1.0e-7, second value /
+ # y: longitude in degrees*1.0e-7, third value
+ # / z: positive altitude over mean sea level
+ # (MSL)
+enums['MAV_FRAME'][5] = EnumEntry('MAV_FRAME_GLOBAL_INT', '''Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)''')
+MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 # Global coordinate frame, WGS84 coordinate system, relative altitude
+ # over ground with respect to the home
+ # position. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude with 0 being at the altitude of the
+ # home location.
+enums['MAV_FRAME'][6] = EnumEntry('MAV_FRAME_GLOBAL_RELATIVE_ALT_INT', '''Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.''')
+MAV_FRAME_LOCAL_OFFSET_NED = 7 # Offset to the current local frame. Anything expressed in this frame
+ # should be added to the current local frame
+ # position.
+enums['MAV_FRAME'][7] = EnumEntry('MAV_FRAME_LOCAL_OFFSET_NED', '''Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.''')
+MAV_FRAME_BODY_NED = 8 # Setpoint in body NED frame. This makes sense if all position control
+ # is externalized - e.g. useful to command 2
+ # m/s^2 acceleration to the right.
+enums['MAV_FRAME'][8] = EnumEntry('MAV_FRAME_BODY_NED', '''Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.''')
+MAV_FRAME_BODY_OFFSET_NED = 9 # Offset in body NED frame. This makes sense if adding setpoints to the
+ # current flight path, to avoid an obstacle -
+ # e.g. useful to command 2 m/s^2 acceleration
+ # to the east.
+enums['MAV_FRAME'][9] = EnumEntry('MAV_FRAME_BODY_OFFSET_NED', '''Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees, second value / y: longitude in
+ # degrees, third value / z: positive altitude
+ # in meters with 0 being at ground level in
+ # terrain model.
+enums['MAV_FRAME'][10] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 # Global coordinate frame with above terrain level altitude. WGS84
+ # coordinate system, relative altitude over
+ # terrain with respect to the waypoint
+ # coordinate. First value / x: latitude in
+ # degrees*10e-7, second value / y: longitude
+ # in degrees*10e-7, third value / z: positive
+ # altitude in meters with 0 being at ground
+ # level in terrain model.
+enums['MAV_FRAME'][11] = EnumEntry('MAV_FRAME_GLOBAL_TERRAIN_ALT_INT', '''Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.''')
+MAV_FRAME_ENUM_END = 12 #
+enums['MAV_FRAME'][12] = EnumEntry('MAV_FRAME_ENUM_END', '''''')
+
+# MAVLINK_DATA_STREAM_TYPE
+enums['MAVLINK_DATA_STREAM_TYPE'] = {}
+MAVLINK_DATA_STREAM_IMG_JPEG = 1 #
+enums['MAVLINK_DATA_STREAM_TYPE'][1] = EnumEntry('MAVLINK_DATA_STREAM_IMG_JPEG', '''''')
+MAVLINK_DATA_STREAM_IMG_BMP = 2 #
+enums['MAVLINK_DATA_STREAM_TYPE'][2] = EnumEntry('MAVLINK_DATA_STREAM_IMG_BMP', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW8U = 3 #
+enums['MAVLINK_DATA_STREAM_TYPE'][3] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW8U', '''''')
+MAVLINK_DATA_STREAM_IMG_RAW32U = 4 #
+enums['MAVLINK_DATA_STREAM_TYPE'][4] = EnumEntry('MAVLINK_DATA_STREAM_IMG_RAW32U', '''''')
+MAVLINK_DATA_STREAM_IMG_PGM = 5 #
+enums['MAVLINK_DATA_STREAM_TYPE'][5] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PGM', '''''')
+MAVLINK_DATA_STREAM_IMG_PNG = 6 #
+enums['MAVLINK_DATA_STREAM_TYPE'][6] = EnumEntry('MAVLINK_DATA_STREAM_IMG_PNG', '''''')
+MAVLINK_DATA_STREAM_TYPE_ENUM_END = 7 #
+enums['MAVLINK_DATA_STREAM_TYPE'][7] = EnumEntry('MAVLINK_DATA_STREAM_TYPE_ENUM_END', '''''')
+
+# FENCE_ACTION
+enums['FENCE_ACTION'] = {}
+FENCE_ACTION_NONE = 0 # Disable fenced mode
+enums['FENCE_ACTION'][0] = EnumEntry('FENCE_ACTION_NONE', '''Disable fenced mode''')
+FENCE_ACTION_GUIDED = 1 # Switched to guided mode to return point (fence point 0)
+enums['FENCE_ACTION'][1] = EnumEntry('FENCE_ACTION_GUIDED', '''Switched to guided mode to return point (fence point 0)''')
+FENCE_ACTION_REPORT = 2 # Report fence breach, but don't take action
+enums['FENCE_ACTION'][2] = EnumEntry('FENCE_ACTION_REPORT', '''Report fence breach, but don't take action''')
+FENCE_ACTION_GUIDED_THR_PASS = 3 # Switched to guided mode to return point (fence point 0) with manual
+ # throttle control
+enums['FENCE_ACTION'][3] = EnumEntry('FENCE_ACTION_GUIDED_THR_PASS', '''Switched to guided mode to return point (fence point 0) with manual throttle control''')
+FENCE_ACTION_RTL = 4 # Switch to RTL (return to launch) mode and head for the return point.
+enums['FENCE_ACTION'][4] = EnumEntry('FENCE_ACTION_RTL', '''Switch to RTL (return to launch) mode and head for the return point.''')
+FENCE_ACTION_ENUM_END = 5 #
+enums['FENCE_ACTION'][5] = EnumEntry('FENCE_ACTION_ENUM_END', '''''')
+
+# FENCE_BREACH
+enums['FENCE_BREACH'] = {}
+FENCE_BREACH_NONE = 0 # No last fence breach
+enums['FENCE_BREACH'][0] = EnumEntry('FENCE_BREACH_NONE', '''No last fence breach''')
+FENCE_BREACH_MINALT = 1 # Breached minimum altitude
+enums['FENCE_BREACH'][1] = EnumEntry('FENCE_BREACH_MINALT', '''Breached minimum altitude''')
+FENCE_BREACH_MAXALT = 2 # Breached maximum altitude
+enums['FENCE_BREACH'][2] = EnumEntry('FENCE_BREACH_MAXALT', '''Breached maximum altitude''')
+FENCE_BREACH_BOUNDARY = 3 # Breached fence boundary
+enums['FENCE_BREACH'][3] = EnumEntry('FENCE_BREACH_BOUNDARY', '''Breached fence boundary''')
+FENCE_BREACH_ENUM_END = 4 #
+enums['FENCE_BREACH'][4] = EnumEntry('FENCE_BREACH_ENUM_END', '''''')
+
+# MAV_MOUNT_MODE
+enums['MAV_MOUNT_MODE'] = {}
+MAV_MOUNT_MODE_RETRACT = 0 # Load and keep safe position (Roll,Pitch,Yaw) from permant memory and
+ # stop stabilization
+enums['MAV_MOUNT_MODE'][0] = EnumEntry('MAV_MOUNT_MODE_RETRACT', '''Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization''')
+MAV_MOUNT_MODE_NEUTRAL = 1 # Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+enums['MAV_MOUNT_MODE'][1] = EnumEntry('MAV_MOUNT_MODE_NEUTRAL', '''Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.''')
+MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 # Load neutral position and start MAVLink Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][2] = EnumEntry('MAV_MOUNT_MODE_MAVLINK_TARGETING', '''Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_RC_TARGETING = 3 # Load neutral position and start RC Roll,Pitch,Yaw control with
+ # stabilization
+enums['MAV_MOUNT_MODE'][3] = EnumEntry('MAV_MOUNT_MODE_RC_TARGETING', '''Load neutral position and start RC Roll,Pitch,Yaw control with stabilization''')
+MAV_MOUNT_MODE_GPS_POINT = 4 # Load neutral position and start to point to Lat,Lon,Alt
+enums['MAV_MOUNT_MODE'][4] = EnumEntry('MAV_MOUNT_MODE_GPS_POINT', '''Load neutral position and start to point to Lat,Lon,Alt''')
+MAV_MOUNT_MODE_ENUM_END = 5 #
+enums['MAV_MOUNT_MODE'][5] = EnumEntry('MAV_MOUNT_MODE_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_CPU_LOAD = 170
+MAVLINK_MSG_ID_SENSOR_BIAS = 172
+MAVLINK_MSG_ID_DIAGNOSTIC = 173
+MAVLINK_MSG_ID_SLUGS_NAVIGATION = 176
+MAVLINK_MSG_ID_DATA_LOG = 177
+MAVLINK_MSG_ID_GPS_DATE_TIME = 179
+MAVLINK_MSG_ID_MID_LVL_CMDS = 180
+MAVLINK_MSG_ID_CTRL_SRFC_PT = 181
+MAVLINK_MSG_ID_SLUGS_CAMERA_ORDER = 184
+MAVLINK_MSG_ID_CONTROL_SURFACE = 185
+MAVLINK_MSG_ID_SLUGS_MOBILE_LOCATION = 186
+MAVLINK_MSG_ID_SLUGS_CONFIGURATION_CAMERA = 188
+MAVLINK_MSG_ID_ISR_LOCATION = 189
+MAVLINK_MSG_ID_VOLT_SENSOR = 191
+MAVLINK_MSG_ID_PTZ_STATUS = 192
+MAVLINK_MSG_ID_UAV_STATUS = 193
+MAVLINK_MSG_ID_STATUS_GPS = 194
+MAVLINK_MSG_ID_NOVATEL_DIAG = 195
+MAVLINK_MSG_ID_SENSOR_DIAG = 196
+MAVLINK_MSG_ID_BOOT = 197
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_cpu_load_message(MAVLink_message):
+ '''
+ Sensor and DSC control loads.
+ '''
+ id = MAVLINK_MSG_ID_CPU_LOAD
+ name = 'CPU_LOAD'
+ fieldnames = ['sensLoad', 'ctrlLoad', 'batVolt']
+ ordered_fieldnames = [ 'batVolt', 'sensLoad', 'ctrlLoad' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.xml
new file mode 100755
index 000000000..a985eab38
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/slugs.xml
@@ -0,0 +1,339 @@
+
+
+ common.xml
+
+
+
+
+
+ Does nothing.
+ 1 to arm, 0 to disarm
+
+
+
+
+
+ Return vehicle to base.
+ 0: return to base, 1: track mobile base
+
+
+ Stops the vehicle from returning to base and resumes flight.
+
+
+ Turns the vehicle's visible or infrared lights on or off.
+ 0: visible lights, 1: infrared lights
+ 0: turn on, 1: turn off
+
+
+ Requests vehicle to send current mid-level commands to ground station.
+
+
+ Requests storage of mid-level commands.
+ Mid-level command storage: 0: read from flash/EEPROM, 1: write to flash/EEPROM
+
+
+
+
+
+ Slugs-specific navigation modes.
+
+ No change to SLUGS mode.
+
+
+ Vehicle is in liftoff mode.
+
+
+ Vehicle is in passthrough mode, being controlled by a pilot.
+
+
+ Vehicle is in waypoint mode, navigating to waypoints.
+
+
+ Vehicle is executing mid-level commands.
+
+
+ Vehicle is returning to the home location.
+
+
+ Vehicle is landing.
+
+
+ Lost connection with vehicle.
+
+
+ Vehicle is in selective passthrough mode, where selected surfaces are being manually controlled.
+
+
+ Vehicle is in ISR mode, performing reconaissance at a point specified by ISR_LOCATION message.
+
+
+ Vehicle is patrolling along lines between waypoints.
+
+
+ Vehicle is grounded or an error has occurred.
+
+
+
+
+ These flags encode the control surfaces for selective passthrough mode. If a bit is set then the pilot console
+ has control of the surface, and if not then the autopilot has control of the surface.
+
+ 0b10000000 Throttle control passes through to pilot console.
+
+
+ 0b01000000 Left aileron control passes through to pilot console.
+
+
+ 0b00100000 Right aileron control passes through to pilot console.
+
+
+ 0b00010000 Rudder control passes through to pilot console.
+
+
+ 0b00001000 Left elevator control passes through to pilot console.
+
+
+ 0b00000100 Right elevator control passes through to pilot console.
+
+
+ 0b00000010 Left flap control passes through to pilot console.
+
+
+ 0b00000001 Right flap control passes through to pilot console.
+
+
+
+
+
+
+
+ Sensor and DSC control loads.
+ Sensor DSC Load
+ Control DSC Load
+ Battery Voltage in millivolts
+
+
+
+ Accelerometer and gyro biases.
+ Accelerometer X bias (m/s)
+ Accelerometer Y bias (m/s)
+ Accelerometer Z bias (m/s)
+ Gyro X bias (rad/s)
+ Gyro Y bias (rad/s)
+ Gyro Z bias (rad/s)
+
+
+
+ Configurable diagnostic messages.
+ Diagnostic float 1
+ Diagnostic float 2
+ Diagnostic float 3
+ Diagnostic short 1
+ Diagnostic short 2
+ Diagnostic short 3
+
+
+
+ Data used in the navigation algorithm.
+ Measured Airspeed prior to the nav filter in m/s
+ Commanded Roll
+ Commanded Pitch
+ Commanded Turn rate
+ Y component of the body acceleration
+ Total Distance to Run on this leg of Navigation
+ Remaining distance to Run on this leg of Navigation
+ Origin WP
+ Destination WP
+ Commanded altitude in 0.1 m
+
+
+
+ Configurable data log probes to be used inside Simulink
+ Log value 1
+ Log value 2
+ Log value 3
+ Log value 4
+ Log value 5
+ Log value 6
+
+
+
+ Pilot console PWM messges.
+ Year reported by Gps
+ Month reported by Gps
+ Day reported by Gps
+ Hour reported by Gps
+ Min reported by Gps
+ Sec reported by Gps
+ Clock Status. See table 47 page 211 OEMStar Manual
+ Visible satellites reported by Gps
+ Used satellites in Solution
+ GPS+GLONASS satellites in Solution
+ GPS and GLONASS usage mask (bit 0 GPS_used? bit_4 GLONASS_used?)
+ Percent used GPS
+
+
+
+ Mid Level commands sent from the GS to the autopilot. These are only sent when being operated in mid-level commands mode from the ground.
+ The system setting the commands
+ Commanded Altitude in meters
+ Commanded Airspeed in m/s
+ Commanded Turnrate in rad/s
+
+
+
+ This message sets the control surfaces for selective passthrough mode.
+ The system setting the commands
+ Bitfield containing the passthrough configuration, see CONTROL_SURFACE_FLAG ENUM.
+
+
+
+ Orders generated to the SLUGS camera mount.
+ The system reporting the action
+ Order the mount to pan: -1 left, 0 No pan motion, +1 right
+ Order the mount to tilt: -1 down, 0 No tilt motion, +1 up
+ Order the zoom values 0 to 10
+ Orders the camera mount to move home. The other fields are ignored when this field is set. 1: move home, 0 ignored
+
+
+
+ Control for surface; pending and order to origin.
+ The system setting the commands
+ ID control surface send 0: throttle 1: aileron 2: elevator 3: rudder
+ Pending
+ Order to origin
+
+
+
+
+
+
+ Transmits the last known position of the mobile GS to the UAV. Very relevant when Track Mobile is enabled
+ The system reporting the action
+ Mobile Latitude
+ Mobile Longitude
+
+
+
+ Control for camara.
+ The system setting the commands
+ ID 0: brightness 1: aperture 2: iris 3: ICR 4: backlight
+ 1: up/on 2: down/off 3: auto/reset/no action
+
+
+
+ Transmits the position of watch
+ The system reporting the action
+ ISR Latitude
+ ISR Longitude
+ ISR Height
+ Option 1
+ Option 2
+ Option 3
+
+
+
+
+
+
+ Transmits the readings from the voltage and current sensors
+ It is the value of reading 2: 0 - Current, 1 - Foreward Sonar, 2 - Back Sonar, 3 - RPM
+ Voltage in uS of PWM. 0 uS = 0V, 20 uS = 21.5V
+ Depends on the value of r2Type (0) Current consumption in uS of PWM, 20 uS = 90Amp (1) Distance in cm (2) Distance in cm (3) Absolute value
+
+
+
+ Transmits the actual Pan, Tilt and Zoom values of the camera unit
+ The actual Zoom Value
+ The Pan value in 10ths of degree
+ The Tilt value in 10ths of degree
+
+
+
+ Transmits the actual status values UAV in flight
+ The ID system reporting the action
+ Latitude UAV
+ Longitude UAV
+ Altitude UAV
+ Speed UAV
+ Course UAV
+
+
+
+ This contains the status of the GPS readings
+ Number of times checksum has failed
+ The quality indicator, 0=fix not available or invalid, 1=GPS fix, 2=C/A differential GPS, 6=Dead reckoning mode, 7=Manual input mode (fixed position), 8=Simulator mode, 9= WAAS a
+ Indicates if GN, GL or GP messages are being received
+ A = data valid, V = data invalid
+ Magnetic variation, degrees
+ Magnetic variation direction E/W. Easterly variation (E) subtracts from True course and Westerly variation (W) adds to True course
+ Positioning system mode indicator. A - Autonomous;D-Differential; E-Estimated (dead reckoning) mode;M-Manual input; N-Data not valid
+
+
+
+ Transmits the diagnostics data from the Novatel OEMStar GPS
+ The Time Status. See Table 8 page 27 Novatel OEMStar Manual
+ Status Bitfield. See table 69 page 350 Novatel OEMstar Manual
+ solution Status. See table 44 page 197
+ position type. See table 43 page 196
+ velocity type. See table 43 page 196
+ Age of the position solution in seconds
+ Times the CRC has failed since boot
+
+
+
+ Diagnostic data Sensor MCU
+ Float field 1
+ Float field 2
+ Int 16 field 1
+ Int 8 field 1
+
+
+
+
+ The boot message indicates that a system is starting. The onboard software version allows to keep track of onboard soft/firmware revisions. This message allows the sensor and control MCUs to communicate version numbers on startup.
+ The onboard software version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/test.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/test.py
new file mode 100644
index 000000000..d97ce34a9
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/test.py
@@ -0,0 +1,715 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: test.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'test'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+ 3
+
+
+ Test all field types
+ char
+ string
+ uint8_t
+ uint16_t
+ uint32_t
+ uint64_t
+ int8_t
+ int16_t
+ int32_t
+ int64_t
+ float
+ double
+ uint8_t_array
+ uint16_t_array
+ uint32_t_array
+ uint64_t_array
+ int8_t_array
+ int16_t_array
+ int32_t_array
+ int64_t_array
+ float_array
+ double_array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/uAvionix.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/uAvionix.py
new file mode 100644
index 000000000..88a95accd
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/uAvionix.py
@@ -0,0 +1,952 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: uAvionix.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'uAvionix'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack('= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+
+
+
+
+
+
+
+
+
+ State flags for ADS-B transponder dynamic report
+
+
+
+
+
+
+
+ Transceiver RF control flags for ADS-B transponder dynamic reports
+
+
+
+
+
+ Status for ADS-B transponder dynamic input
+
+
+
+
+
+
+
+
+ Status flags for ADS-B transponder dynamic output
+
+
+
+
+
+
+ Definitions for aircraft size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GPS lataral offset encoding
+
+
+
+
+
+
+
+
+
+
+ GPS longitudinal offset encoding
+
+
+
+
+ Emergency status encoding
+
+
+
+
+
+
+
+
+
+
+
+
+ Static data to configure the ADS-B transponder (send within 10 sec of a POR and every 10 sec thereafter)
+ Vehicle address (24 bit)
+ Vehicle identifier (8 characters, null terminated, valid characters are A-Z, 0-9, " " only)
+ Transmitting vehicle type. See ADSB_EMITTER_TYPE enum
+ Aircraft length and width encoding (table 2-35 of DO-282B)
+ GPS antenna lateral offset (table 2-36 of DO-282B)
+ GPS antenna longitudinal offset from nose [if non-zero, take position (in meters) divide by 2 and add one] (table 2-37 DO-282B)
+ Aircraft stall speed in cm/s
+ ADS-B transponder reciever and transmit enable flags
+
+
+ Dynamic data used to generate ADS-B out transponder data (send at 5Hz)
+ UTC time in seconds since GPS epoch (Jan 6, 1980). If unknown set to UINT32_MAX
+ Latitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Longitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Altitude in mm (m * 1E-3) UP +ve. WGS84 altitude. If unknown set to INT32_MAX
+ 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: DGPS, 5: RTK
+ Number of satellites visible. If unknown set to UINT8_MAX
+ Barometric pressure altitude relative to a standard atmosphere of 1013.2 mBar and NOT bar corrected altitude (m * 1E-3). (up +ve). If unknown set to INT32_MAX
+ Horizontal accuracy in mm (m * 1E-3). If unknown set to UINT32_MAX
+ Vertical accuracy in cm. If unknown set to UINT16_MAX
+ Velocity accuracy in mm/s (m * 1E-3). If unknown set to UINT16_MAX
+ GPS vertical speed in cm/s. If unknown set to INT16_MAX
+ North-South velocity over ground in cm/s North +ve. If unknown set to INT16_MAX
+ East-West velocity over ground in cm/s East +ve. If unknown set to INT16_MAX
+ Emergency status
+ ADS-B transponder dynamic input state flags
+ Mode A code (typically 1200 [0x04B0] for VFR)
+
+
+ Transceiver heartbeat with health report (updated every 10s)
+ ADS-B transponder messages
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.py
new file mode 100644
index 000000000..5f87d7e24
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.py
@@ -0,0 +1,12218 @@
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ualberta.xml,common.xml
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '2.0'
+DIALECT = 'ualberta'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if True: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.'''
+enums['MAV_CMD'][16].param[4] = '''Desired yaw angle at MISSION (rotary wing)'''
+enums['MAV_CMD'][16].param[5] = '''Latitude'''
+enums['MAV_CMD'][16].param[6] = '''Longitude'''
+enums['MAV_CMD'][16].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_UNLIM = 17 # Loiter around this MISSION an unlimited amount of time
+enums['MAV_CMD'][17] = EnumEntry('MAV_CMD_NAV_LOITER_UNLIM', '''Loiter around this MISSION an unlimited amount of time''')
+enums['MAV_CMD'][17].param[1] = '''Empty'''
+enums['MAV_CMD'][17].param[2] = '''Empty'''
+enums['MAV_CMD'][17].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][17].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][17].param[5] = '''Latitude'''
+enums['MAV_CMD'][17].param[6] = '''Longitude'''
+enums['MAV_CMD'][17].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TURNS = 18 # Loiter around this MISSION for X turns
+enums['MAV_CMD'][18] = EnumEntry('MAV_CMD_NAV_LOITER_TURNS', '''Loiter around this MISSION for X turns''')
+enums['MAV_CMD'][18].param[1] = '''Turns'''
+enums['MAV_CMD'][18].param[2] = '''Empty'''
+enums['MAV_CMD'][18].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][18].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][18].param[5] = '''Latitude'''
+enums['MAV_CMD'][18].param[6] = '''Longitude'''
+enums['MAV_CMD'][18].param[7] = '''Altitude'''
+MAV_CMD_NAV_LOITER_TIME = 19 # Loiter around this MISSION for X seconds
+enums['MAV_CMD'][19] = EnumEntry('MAV_CMD_NAV_LOITER_TIME', '''Loiter around this MISSION for X seconds''')
+enums['MAV_CMD'][19].param[1] = '''Seconds (decimal)'''
+enums['MAV_CMD'][19].param[2] = '''Empty'''
+enums['MAV_CMD'][19].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][19].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle'''
+enums['MAV_CMD'][19].param[5] = '''Latitude'''
+enums['MAV_CMD'][19].param[6] = '''Longitude'''
+enums['MAV_CMD'][19].param[7] = '''Altitude'''
+MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 # Return to launch location
+enums['MAV_CMD'][20] = EnumEntry('MAV_CMD_NAV_RETURN_TO_LAUNCH', '''Return to launch location''')
+enums['MAV_CMD'][20].param[1] = '''Empty'''
+enums['MAV_CMD'][20].param[2] = '''Empty'''
+enums['MAV_CMD'][20].param[3] = '''Empty'''
+enums['MAV_CMD'][20].param[4] = '''Empty'''
+enums['MAV_CMD'][20].param[5] = '''Empty'''
+enums['MAV_CMD'][20].param[6] = '''Empty'''
+enums['MAV_CMD'][20].param[7] = '''Empty'''
+MAV_CMD_NAV_LAND = 21 # Land at location
+enums['MAV_CMD'][21] = EnumEntry('MAV_CMD_NAV_LAND', '''Land at location''')
+enums['MAV_CMD'][21].param[1] = '''Abort Alt'''
+enums['MAV_CMD'][21].param[2] = '''Empty'''
+enums['MAV_CMD'][21].param[3] = '''Empty'''
+enums['MAV_CMD'][21].param[4] = '''Desired yaw angle'''
+enums['MAV_CMD'][21].param[5] = '''Latitude'''
+enums['MAV_CMD'][21].param[6] = '''Longitude'''
+enums['MAV_CMD'][21].param[7] = '''Altitude'''
+MAV_CMD_NAV_TAKEOFF = 22 # Takeoff from ground / hand
+enums['MAV_CMD'][22] = EnumEntry('MAV_CMD_NAV_TAKEOFF', '''Takeoff from ground / hand''')
+enums['MAV_CMD'][22].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor'''
+enums['MAV_CMD'][22].param[2] = '''Empty'''
+enums['MAV_CMD'][22].param[3] = '''Empty'''
+enums['MAV_CMD'][22].param[4] = '''Yaw angle (if magnetometer present), ignored without magnetometer'''
+enums['MAV_CMD'][22].param[5] = '''Latitude'''
+enums['MAV_CMD'][22].param[6] = '''Longitude'''
+enums['MAV_CMD'][22].param[7] = '''Altitude'''
+MAV_CMD_NAV_LAND_LOCAL = 23 # Land at local position (local frame only)
+enums['MAV_CMD'][23] = EnumEntry('MAV_CMD_NAV_LAND_LOCAL', '''Land at local position (local frame only)''')
+enums['MAV_CMD'][23].param[1] = '''Landing target number (if available)'''
+enums['MAV_CMD'][23].param[2] = '''Maximum accepted offset from desired landing position [m] - 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'''
+enums['MAV_CMD'][23].param[3] = '''Landing descend rate [ms^-1]'''
+enums['MAV_CMD'][23].param[4] = '''Desired yaw angle [rad]'''
+enums['MAV_CMD'][23].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][23].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][23].param[7] = '''Z-axis / ground level position [m]'''
+MAV_CMD_NAV_TAKEOFF_LOCAL = 24 # Takeoff from local position (local frame only)
+enums['MAV_CMD'][24] = EnumEntry('MAV_CMD_NAV_TAKEOFF_LOCAL', '''Takeoff from local position (local frame only)''')
+enums['MAV_CMD'][24].param[1] = '''Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]'''
+enums['MAV_CMD'][24].param[2] = '''Empty'''
+enums['MAV_CMD'][24].param[3] = '''Takeoff ascend rate [ms^-1]'''
+enums['MAV_CMD'][24].param[4] = '''Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these'''
+enums['MAV_CMD'][24].param[5] = '''Y-axis position [m]'''
+enums['MAV_CMD'][24].param[6] = '''X-axis position [m]'''
+enums['MAV_CMD'][24].param[7] = '''Z-axis position [m]'''
+MAV_CMD_NAV_FOLLOW = 25 # Vehicle following, i.e. this waypoint represents the position of a
+ # moving vehicle
+enums['MAV_CMD'][25] = EnumEntry('MAV_CMD_NAV_FOLLOW', '''Vehicle following, i.e. this waypoint represents the position of a moving vehicle''')
+enums['MAV_CMD'][25].param[1] = '''Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation'''
+enums['MAV_CMD'][25].param[2] = '''Ground speed of vehicle to be followed'''
+enums['MAV_CMD'][25].param[3] = '''Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise'''
+enums['MAV_CMD'][25].param[4] = '''Desired yaw angle.'''
+enums['MAV_CMD'][25].param[5] = '''Latitude'''
+enums['MAV_CMD'][25].param[6] = '''Longitude'''
+enums['MAV_CMD'][25].param[7] = '''Altitude'''
+MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 # 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.
+enums['MAV_CMD'][30] = EnumEntry('MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT', '''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.''')
+enums['MAV_CMD'][30].param[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. '''
+enums['MAV_CMD'][30].param[2] = '''Empty'''
+enums['MAV_CMD'][30].param[3] = '''Empty'''
+enums['MAV_CMD'][30].param[4] = '''Empty'''
+enums['MAV_CMD'][30].param[5] = '''Empty'''
+enums['MAV_CMD'][30].param[6] = '''Empty'''
+enums['MAV_CMD'][30].param[7] = '''Desired altitude in meters'''
+MAV_CMD_NAV_LOITER_TO_ALT = 31 # 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.
+enums['MAV_CMD'][31] = EnumEntry('MAV_CMD_NAV_LOITER_TO_ALT', '''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. ''')
+enums['MAV_CMD'][31].param[1] = '''Heading Required (0 = False)'''
+enums['MAV_CMD'][31].param[2] = '''Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.'''
+enums['MAV_CMD'][31].param[3] = '''Empty'''
+enums['MAV_CMD'][31].param[4] = '''Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location'''
+enums['MAV_CMD'][31].param[5] = '''Latitude'''
+enums['MAV_CMD'][31].param[6] = '''Longitude'''
+enums['MAV_CMD'][31].param[7] = '''Altitude'''
+MAV_CMD_DO_FOLLOW = 32 # Being following a target
+enums['MAV_CMD'][32] = EnumEntry('MAV_CMD_DO_FOLLOW', '''Being following a target''')
+enums['MAV_CMD'][32].param[1] = '''System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode'''
+enums['MAV_CMD'][32].param[2] = '''RESERVED'''
+enums['MAV_CMD'][32].param[3] = '''RESERVED'''
+enums['MAV_CMD'][32].param[4] = '''altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home'''
+enums['MAV_CMD'][32].param[5] = '''altitude'''
+enums['MAV_CMD'][32].param[6] = '''RESERVED'''
+enums['MAV_CMD'][32].param[7] = '''TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout'''
+MAV_CMD_DO_FOLLOW_REPOSITION = 33 # Reposition the MAV after a follow target command has been sent
+enums['MAV_CMD'][33] = EnumEntry('MAV_CMD_DO_FOLLOW_REPOSITION', '''Reposition the MAV after a follow target command has been sent''')
+enums['MAV_CMD'][33].param[1] = '''Camera q1 (where 0 is on the ray from the camera to the tracking device)'''
+enums['MAV_CMD'][33].param[2] = '''Camera q2'''
+enums['MAV_CMD'][33].param[3] = '''Camera q3'''
+enums['MAV_CMD'][33].param[4] = '''Camera q4'''
+enums['MAV_CMD'][33].param[5] = '''altitude offset from target (m)'''
+enums['MAV_CMD'][33].param[6] = '''X offset from target (m)'''
+enums['MAV_CMD'][33].param[7] = '''Y offset from target (m)'''
+MAV_CMD_NAV_ROI = 80 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][80] = EnumEntry('MAV_CMD_NAV_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][80].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][80].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][80].param[4] = '''Empty'''
+enums['MAV_CMD'][80].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][80].param[6] = '''y'''
+enums['MAV_CMD'][80].param[7] = '''z'''
+MAV_CMD_NAV_PATHPLANNING = 81 # Control autonomous path planning on the MAV.
+enums['MAV_CMD'][81] = EnumEntry('MAV_CMD_NAV_PATHPLANNING', '''Control autonomous path planning on the MAV.''')
+enums['MAV_CMD'][81].param[1] = '''0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning'''
+enums['MAV_CMD'][81].param[2] = '''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'''
+enums['MAV_CMD'][81].param[3] = '''Empty'''
+enums['MAV_CMD'][81].param[4] = '''Yaw angle at goal, in compass degrees, [0..360]'''
+enums['MAV_CMD'][81].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][81].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][81].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_SPLINE_WAYPOINT = 82 # Navigate to MISSION using a spline path.
+enums['MAV_CMD'][82] = EnumEntry('MAV_CMD_NAV_SPLINE_WAYPOINT', '''Navigate to MISSION using a spline path.''')
+enums['MAV_CMD'][82].param[1] = '''Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)'''
+enums['MAV_CMD'][82].param[2] = '''Empty'''
+enums['MAV_CMD'][82].param[3] = '''Empty'''
+enums['MAV_CMD'][82].param[4] = '''Empty'''
+enums['MAV_CMD'][82].param[5] = '''Latitude/X of goal'''
+enums['MAV_CMD'][82].param[6] = '''Longitude/Y of goal'''
+enums['MAV_CMD'][82].param[7] = '''Altitude/Z of goal'''
+MAV_CMD_NAV_VTOL_TAKEOFF = 84 # Takeoff from ground using VTOL mode
+enums['MAV_CMD'][84] = EnumEntry('MAV_CMD_NAV_VTOL_TAKEOFF', '''Takeoff from ground using VTOL mode''')
+enums['MAV_CMD'][84].param[1] = '''Empty'''
+enums['MAV_CMD'][84].param[2] = '''Empty'''
+enums['MAV_CMD'][84].param[3] = '''Empty'''
+enums['MAV_CMD'][84].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][84].param[5] = '''Latitude'''
+enums['MAV_CMD'][84].param[6] = '''Longitude'''
+enums['MAV_CMD'][84].param[7] = '''Altitude'''
+MAV_CMD_NAV_VTOL_LAND = 85 # Land using VTOL mode
+enums['MAV_CMD'][85] = EnumEntry('MAV_CMD_NAV_VTOL_LAND', '''Land using VTOL mode''')
+enums['MAV_CMD'][85].param[1] = '''Empty'''
+enums['MAV_CMD'][85].param[2] = '''Empty'''
+enums['MAV_CMD'][85].param[3] = '''Empty'''
+enums['MAV_CMD'][85].param[4] = '''Yaw angle in degrees'''
+enums['MAV_CMD'][85].param[5] = '''Latitude'''
+enums['MAV_CMD'][85].param[6] = '''Longitude'''
+enums['MAV_CMD'][85].param[7] = '''Altitude'''
+MAV_CMD_NAV_GUIDED_ENABLE = 92 # hand control over to an external controller
+enums['MAV_CMD'][92] = EnumEntry('MAV_CMD_NAV_GUIDED_ENABLE', '''hand control over to an external controller''')
+enums['MAV_CMD'][92].param[1] = '''On / Off (> 0.5f on)'''
+enums['MAV_CMD'][92].param[2] = '''Empty'''
+enums['MAV_CMD'][92].param[3] = '''Empty'''
+enums['MAV_CMD'][92].param[4] = '''Empty'''
+enums['MAV_CMD'][92].param[5] = '''Empty'''
+enums['MAV_CMD'][92].param[6] = '''Empty'''
+enums['MAV_CMD'][92].param[7] = '''Empty'''
+MAV_CMD_NAV_DELAY = 93 # Delay the next navigation command a number of seconds or until a
+ # specified time
+enums['MAV_CMD'][93] = EnumEntry('MAV_CMD_NAV_DELAY', '''Delay the next navigation command a number of seconds or until a specified time''')
+enums['MAV_CMD'][93].param[1] = '''Delay in seconds (decimal, -1 to enable time-of-day fields)'''
+enums['MAV_CMD'][93].param[2] = '''hour (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[3] = '''minute (24h format, UTC, -1 to ignore)'''
+enums['MAV_CMD'][93].param[4] = '''second (24h format, UTC)'''
+enums['MAV_CMD'][93].param[5] = '''Empty'''
+enums['MAV_CMD'][93].param[6] = '''Empty'''
+enums['MAV_CMD'][93].param[7] = '''Empty'''
+MAV_CMD_NAV_LAST = 95 # NOP - This command is only used to mark the upper limit of the
+ # NAV/ACTION commands in the enumeration
+enums['MAV_CMD'][95] = EnumEntry('MAV_CMD_NAV_LAST', '''NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration''')
+enums['MAV_CMD'][95].param[1] = '''Empty'''
+enums['MAV_CMD'][95].param[2] = '''Empty'''
+enums['MAV_CMD'][95].param[3] = '''Empty'''
+enums['MAV_CMD'][95].param[4] = '''Empty'''
+enums['MAV_CMD'][95].param[5] = '''Empty'''
+enums['MAV_CMD'][95].param[6] = '''Empty'''
+enums['MAV_CMD'][95].param[7] = '''Empty'''
+MAV_CMD_CONDITION_DELAY = 112 # Delay mission state machine.
+enums['MAV_CMD'][112] = EnumEntry('MAV_CMD_CONDITION_DELAY', '''Delay mission state machine.''')
+enums['MAV_CMD'][112].param[1] = '''Delay in seconds (decimal)'''
+enums['MAV_CMD'][112].param[2] = '''Empty'''
+enums['MAV_CMD'][112].param[3] = '''Empty'''
+enums['MAV_CMD'][112].param[4] = '''Empty'''
+enums['MAV_CMD'][112].param[5] = '''Empty'''
+enums['MAV_CMD'][112].param[6] = '''Empty'''
+enums['MAV_CMD'][112].param[7] = '''Empty'''
+MAV_CMD_CONDITION_CHANGE_ALT = 113 # Ascend/descend at rate. Delay mission state machine until desired
+ # altitude reached.
+enums['MAV_CMD'][113] = EnumEntry('MAV_CMD_CONDITION_CHANGE_ALT', '''Ascend/descend at rate. Delay mission state machine until desired altitude reached.''')
+enums['MAV_CMD'][113].param[1] = '''Descent / Ascend rate (m/s)'''
+enums['MAV_CMD'][113].param[2] = '''Empty'''
+enums['MAV_CMD'][113].param[3] = '''Empty'''
+enums['MAV_CMD'][113].param[4] = '''Empty'''
+enums['MAV_CMD'][113].param[5] = '''Empty'''
+enums['MAV_CMD'][113].param[6] = '''Empty'''
+enums['MAV_CMD'][113].param[7] = '''Finish Altitude'''
+MAV_CMD_CONDITION_DISTANCE = 114 # Delay mission state machine until within desired distance of next NAV
+ # point.
+enums['MAV_CMD'][114] = EnumEntry('MAV_CMD_CONDITION_DISTANCE', '''Delay mission state machine until within desired distance of next NAV point.''')
+enums['MAV_CMD'][114].param[1] = '''Distance (meters)'''
+enums['MAV_CMD'][114].param[2] = '''Empty'''
+enums['MAV_CMD'][114].param[3] = '''Empty'''
+enums['MAV_CMD'][114].param[4] = '''Empty'''
+enums['MAV_CMD'][114].param[5] = '''Empty'''
+enums['MAV_CMD'][114].param[6] = '''Empty'''
+enums['MAV_CMD'][114].param[7] = '''Empty'''
+MAV_CMD_CONDITION_YAW = 115 # Reach a certain target angle.
+enums['MAV_CMD'][115] = EnumEntry('MAV_CMD_CONDITION_YAW', '''Reach a certain target angle.''')
+enums['MAV_CMD'][115].param[1] = '''target angle: [0-360], 0 is north'''
+enums['MAV_CMD'][115].param[2] = '''speed during yaw change:[deg per second]'''
+enums['MAV_CMD'][115].param[3] = '''direction: negative: counter clockwise, positive: clockwise [-1,1]'''
+enums['MAV_CMD'][115].param[4] = '''relative offset or absolute angle: [ 1,0]'''
+enums['MAV_CMD'][115].param[5] = '''Empty'''
+enums['MAV_CMD'][115].param[6] = '''Empty'''
+enums['MAV_CMD'][115].param[7] = '''Empty'''
+MAV_CMD_CONDITION_LAST = 159 # NOP - This command is only used to mark the upper limit of the
+ # CONDITION commands in the enumeration
+enums['MAV_CMD'][159] = EnumEntry('MAV_CMD_CONDITION_LAST', '''NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration''')
+enums['MAV_CMD'][159].param[1] = '''Empty'''
+enums['MAV_CMD'][159].param[2] = '''Empty'''
+enums['MAV_CMD'][159].param[3] = '''Empty'''
+enums['MAV_CMD'][159].param[4] = '''Empty'''
+enums['MAV_CMD'][159].param[5] = '''Empty'''
+enums['MAV_CMD'][159].param[6] = '''Empty'''
+enums['MAV_CMD'][159].param[7] = '''Empty'''
+MAV_CMD_DO_SET_MODE = 176 # Set system mode.
+enums['MAV_CMD'][176] = EnumEntry('MAV_CMD_DO_SET_MODE', '''Set system mode.''')
+enums['MAV_CMD'][176].param[1] = '''Mode, as defined by ENUM MAV_MODE'''
+enums['MAV_CMD'][176].param[2] = '''Custom mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[3] = '''Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.'''
+enums['MAV_CMD'][176].param[4] = '''Empty'''
+enums['MAV_CMD'][176].param[5] = '''Empty'''
+enums['MAV_CMD'][176].param[6] = '''Empty'''
+enums['MAV_CMD'][176].param[7] = '''Empty'''
+MAV_CMD_DO_JUMP = 177 # Jump to the desired command in the mission list. Repeat this action
+ # only the specified number of times
+enums['MAV_CMD'][177] = EnumEntry('MAV_CMD_DO_JUMP', '''Jump to the desired command in the mission list. Repeat this action only the specified number of times''')
+enums['MAV_CMD'][177].param[1] = '''Sequence number'''
+enums['MAV_CMD'][177].param[2] = '''Repeat count'''
+enums['MAV_CMD'][177].param[3] = '''Empty'''
+enums['MAV_CMD'][177].param[4] = '''Empty'''
+enums['MAV_CMD'][177].param[5] = '''Empty'''
+enums['MAV_CMD'][177].param[6] = '''Empty'''
+enums['MAV_CMD'][177].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_SPEED = 178 # Change speed and/or throttle set points.
+enums['MAV_CMD'][178] = EnumEntry('MAV_CMD_DO_CHANGE_SPEED', '''Change speed and/or throttle set points.''')
+enums['MAV_CMD'][178].param[1] = '''Speed type (0=Airspeed, 1=Ground Speed)'''
+enums['MAV_CMD'][178].param[2] = '''Speed (m/s, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[3] = '''Throttle ( Percent, -1 indicates no change)'''
+enums['MAV_CMD'][178].param[4] = '''absolute or relative [0,1]'''
+enums['MAV_CMD'][178].param[5] = '''Empty'''
+enums['MAV_CMD'][178].param[6] = '''Empty'''
+enums['MAV_CMD'][178].param[7] = '''Empty'''
+MAV_CMD_DO_SET_HOME = 179 # Changes the home location either to the current location or a
+ # specified location.
+enums['MAV_CMD'][179] = EnumEntry('MAV_CMD_DO_SET_HOME', '''Changes the home location either to the current location or a specified location.''')
+enums['MAV_CMD'][179].param[1] = '''Use current (1=use current location, 0=use specified location)'''
+enums['MAV_CMD'][179].param[2] = '''Empty'''
+enums['MAV_CMD'][179].param[3] = '''Empty'''
+enums['MAV_CMD'][179].param[4] = '''Empty'''
+enums['MAV_CMD'][179].param[5] = '''Latitude'''
+enums['MAV_CMD'][179].param[6] = '''Longitude'''
+enums['MAV_CMD'][179].param[7] = '''Altitude'''
+MAV_CMD_DO_SET_PARAMETER = 180 # Set a system parameter. Caution! Use of this command requires
+ # knowledge of the numeric enumeration value
+ # of the parameter.
+enums['MAV_CMD'][180] = EnumEntry('MAV_CMD_DO_SET_PARAMETER', '''Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.''')
+enums['MAV_CMD'][180].param[1] = '''Parameter number'''
+enums['MAV_CMD'][180].param[2] = '''Parameter value'''
+enums['MAV_CMD'][180].param[3] = '''Empty'''
+enums['MAV_CMD'][180].param[4] = '''Empty'''
+enums['MAV_CMD'][180].param[5] = '''Empty'''
+enums['MAV_CMD'][180].param[6] = '''Empty'''
+enums['MAV_CMD'][180].param[7] = '''Empty'''
+MAV_CMD_DO_SET_RELAY = 181 # Set a relay to a condition.
+enums['MAV_CMD'][181] = EnumEntry('MAV_CMD_DO_SET_RELAY', '''Set a relay to a condition.''')
+enums['MAV_CMD'][181].param[1] = '''Relay number'''
+enums['MAV_CMD'][181].param[2] = '''Setting (1=on, 0=off, others possible depending on system hardware)'''
+enums['MAV_CMD'][181].param[3] = '''Empty'''
+enums['MAV_CMD'][181].param[4] = '''Empty'''
+enums['MAV_CMD'][181].param[5] = '''Empty'''
+enums['MAV_CMD'][181].param[6] = '''Empty'''
+enums['MAV_CMD'][181].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_RELAY = 182 # Cycle a relay on and off for a desired number of cyles with a desired
+ # period.
+enums['MAV_CMD'][182] = EnumEntry('MAV_CMD_DO_REPEAT_RELAY', '''Cycle a relay on and off for a desired number of cyles with a desired period.''')
+enums['MAV_CMD'][182].param[1] = '''Relay number'''
+enums['MAV_CMD'][182].param[2] = '''Cycle count'''
+enums['MAV_CMD'][182].param[3] = '''Cycle time (seconds, decimal)'''
+enums['MAV_CMD'][182].param[4] = '''Empty'''
+enums['MAV_CMD'][182].param[5] = '''Empty'''
+enums['MAV_CMD'][182].param[6] = '''Empty'''
+enums['MAV_CMD'][182].param[7] = '''Empty'''
+MAV_CMD_DO_SET_SERVO = 183 # Set a servo to a desired PWM value.
+enums['MAV_CMD'][183] = EnumEntry('MAV_CMD_DO_SET_SERVO', '''Set a servo to a desired PWM value.''')
+enums['MAV_CMD'][183].param[1] = '''Servo number'''
+enums['MAV_CMD'][183].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][183].param[3] = '''Empty'''
+enums['MAV_CMD'][183].param[4] = '''Empty'''
+enums['MAV_CMD'][183].param[5] = '''Empty'''
+enums['MAV_CMD'][183].param[6] = '''Empty'''
+enums['MAV_CMD'][183].param[7] = '''Empty'''
+MAV_CMD_DO_REPEAT_SERVO = 184 # Cycle a between its nominal setting and a desired PWM for a desired
+ # number of cycles with a desired period.
+enums['MAV_CMD'][184] = EnumEntry('MAV_CMD_DO_REPEAT_SERVO', '''Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.''')
+enums['MAV_CMD'][184].param[1] = '''Servo number'''
+enums['MAV_CMD'][184].param[2] = '''PWM (microseconds, 1000 to 2000 typical)'''
+enums['MAV_CMD'][184].param[3] = '''Cycle count'''
+enums['MAV_CMD'][184].param[4] = '''Cycle time (seconds)'''
+enums['MAV_CMD'][184].param[5] = '''Empty'''
+enums['MAV_CMD'][184].param[6] = '''Empty'''
+enums['MAV_CMD'][184].param[7] = '''Empty'''
+MAV_CMD_DO_FLIGHTTERMINATION = 185 # Terminate flight immediately
+enums['MAV_CMD'][185] = EnumEntry('MAV_CMD_DO_FLIGHTTERMINATION', '''Terminate flight immediately''')
+enums['MAV_CMD'][185].param[1] = '''Flight termination activated if > 0.5'''
+enums['MAV_CMD'][185].param[2] = '''Empty'''
+enums['MAV_CMD'][185].param[3] = '''Empty'''
+enums['MAV_CMD'][185].param[4] = '''Empty'''
+enums['MAV_CMD'][185].param[5] = '''Empty'''
+enums['MAV_CMD'][185].param[6] = '''Empty'''
+enums['MAV_CMD'][185].param[7] = '''Empty'''
+MAV_CMD_DO_CHANGE_ALTITUDE = 186 # Change altitude set point.
+enums['MAV_CMD'][186] = EnumEntry('MAV_CMD_DO_CHANGE_ALTITUDE', '''Change altitude set point.''')
+enums['MAV_CMD'][186].param[1] = '''Altitude in meters'''
+enums['MAV_CMD'][186].param[2] = '''Mav frame of new altitude (see MAV_FRAME)'''
+enums['MAV_CMD'][186].param[3] = '''Empty'''
+enums['MAV_CMD'][186].param[4] = '''Empty'''
+enums['MAV_CMD'][186].param[5] = '''Empty'''
+enums['MAV_CMD'][186].param[6] = '''Empty'''
+enums['MAV_CMD'][186].param[7] = '''Empty'''
+MAV_CMD_DO_LAND_START = 189 # Mission command to perform a landing. This is used as a marker in a
+ # mission to tell the autopilot where a
+ # sequence of mission items that represents a
+ # landing starts. It may also be sent via a
+ # COMMAND_LONG to trigger a landing, in which
+ # case the nearest (geographically) landing
+ # sequence in the mission will be used. The
+ # Latitude/Longitude is optional, and may be
+ # set to 0/0 if not needed. If specified then
+ # it will be used to help find the closest
+ # landing sequence.
+enums['MAV_CMD'][189] = EnumEntry('MAV_CMD_DO_LAND_START', '''Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.''')
+enums['MAV_CMD'][189].param[1] = '''Empty'''
+enums['MAV_CMD'][189].param[2] = '''Empty'''
+enums['MAV_CMD'][189].param[3] = '''Empty'''
+enums['MAV_CMD'][189].param[4] = '''Empty'''
+enums['MAV_CMD'][189].param[5] = '''Latitude'''
+enums['MAV_CMD'][189].param[6] = '''Longitude'''
+enums['MAV_CMD'][189].param[7] = '''Empty'''
+MAV_CMD_DO_RALLY_LAND = 190 # Mission command to perform a landing from a rally point.
+enums['MAV_CMD'][190] = EnumEntry('MAV_CMD_DO_RALLY_LAND', '''Mission command to perform a landing from a rally point.''')
+enums['MAV_CMD'][190].param[1] = '''Break altitude (meters)'''
+enums['MAV_CMD'][190].param[2] = '''Landing speed (m/s)'''
+enums['MAV_CMD'][190].param[3] = '''Empty'''
+enums['MAV_CMD'][190].param[4] = '''Empty'''
+enums['MAV_CMD'][190].param[5] = '''Empty'''
+enums['MAV_CMD'][190].param[6] = '''Empty'''
+enums['MAV_CMD'][190].param[7] = '''Empty'''
+MAV_CMD_DO_GO_AROUND = 191 # Mission command to safely abort an autonmous landing.
+enums['MAV_CMD'][191] = EnumEntry('MAV_CMD_DO_GO_AROUND', '''Mission command to safely abort an autonmous landing.''')
+enums['MAV_CMD'][191].param[1] = '''Altitude (meters)'''
+enums['MAV_CMD'][191].param[2] = '''Empty'''
+enums['MAV_CMD'][191].param[3] = '''Empty'''
+enums['MAV_CMD'][191].param[4] = '''Empty'''
+enums['MAV_CMD'][191].param[5] = '''Empty'''
+enums['MAV_CMD'][191].param[6] = '''Empty'''
+enums['MAV_CMD'][191].param[7] = '''Empty'''
+MAV_CMD_DO_REPOSITION = 192 # Reposition the vehicle to a specific WGS84 global position.
+enums['MAV_CMD'][192] = EnumEntry('MAV_CMD_DO_REPOSITION', '''Reposition the vehicle to a specific WGS84 global position.''')
+enums['MAV_CMD'][192].param[1] = '''Ground speed, less than 0 (-1) for default'''
+enums['MAV_CMD'][192].param[2] = '''Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.'''
+enums['MAV_CMD'][192].param[3] = '''Reserved'''
+enums['MAV_CMD'][192].param[4] = '''Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)'''
+enums['MAV_CMD'][192].param[5] = '''Latitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[6] = '''Longitude (deg * 1E7)'''
+enums['MAV_CMD'][192].param[7] = '''Altitude (meters)'''
+MAV_CMD_DO_PAUSE_CONTINUE = 193 # If in a GPS controlled position mode, hold the current position or
+ # continue.
+enums['MAV_CMD'][193] = EnumEntry('MAV_CMD_DO_PAUSE_CONTINUE', '''If in a GPS controlled position mode, hold the current position or continue.''')
+enums['MAV_CMD'][193].param[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.'''
+enums['MAV_CMD'][193].param[2] = '''Reserved'''
+enums['MAV_CMD'][193].param[3] = '''Reserved'''
+enums['MAV_CMD'][193].param[4] = '''Reserved'''
+enums['MAV_CMD'][193].param[5] = '''Reserved'''
+enums['MAV_CMD'][193].param[6] = '''Reserved'''
+enums['MAV_CMD'][193].param[7] = '''Reserved'''
+MAV_CMD_DO_SET_REVERSE = 194 # Set moving direction to forward or reverse.
+enums['MAV_CMD'][194] = EnumEntry('MAV_CMD_DO_SET_REVERSE', '''Set moving direction to forward or reverse.''')
+enums['MAV_CMD'][194].param[1] = '''Direction (0=Forward, 1=Reverse)'''
+enums['MAV_CMD'][194].param[2] = '''Empty'''
+enums['MAV_CMD'][194].param[3] = '''Empty'''
+enums['MAV_CMD'][194].param[4] = '''Empty'''
+enums['MAV_CMD'][194].param[5] = '''Empty'''
+enums['MAV_CMD'][194].param[6] = '''Empty'''
+enums['MAV_CMD'][194].param[7] = '''Empty'''
+MAV_CMD_DO_CONTROL_VIDEO = 200 # Control onboard camera system.
+enums['MAV_CMD'][200] = EnumEntry('MAV_CMD_DO_CONTROL_VIDEO', '''Control onboard camera system.''')
+enums['MAV_CMD'][200].param[1] = '''Camera ID (-1 for all)'''
+enums['MAV_CMD'][200].param[2] = '''Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[3] = '''Transmission mode: 0: video stream, >0: single images every n seconds (decimal)'''
+enums['MAV_CMD'][200].param[4] = '''Recording: 0: disabled, 1: enabled compressed, 2: enabled raw'''
+enums['MAV_CMD'][200].param[5] = '''Empty'''
+enums['MAV_CMD'][200].param[6] = '''Empty'''
+enums['MAV_CMD'][200].param[7] = '''Empty'''
+MAV_CMD_DO_SET_ROI = 201 # Sets the region of interest (ROI) for a sensor set or the vehicle
+ # itself. This can then be used by the
+ # vehicles control system to control the
+ # vehicle attitude and the attitude of various
+ # sensors such as cameras.
+enums['MAV_CMD'][201] = EnumEntry('MAV_CMD_DO_SET_ROI', '''Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.''')
+enums['MAV_CMD'][201].param[1] = '''Region of intereset mode. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[2] = '''MISSION index/ target ID. (see MAV_ROI enum)'''
+enums['MAV_CMD'][201].param[3] = '''ROI index (allows a vehicle to manage multiple ROI's)'''
+enums['MAV_CMD'][201].param[4] = '''Empty'''
+enums['MAV_CMD'][201].param[5] = '''x the location of the fixed ROI (see MAV_FRAME)'''
+enums['MAV_CMD'][201].param[6] = '''y'''
+enums['MAV_CMD'][201].param[7] = '''z'''
+MAV_CMD_DO_DIGICAM_CONFIGURE = 202 # Mission command to configure an on-board camera controller system.
+enums['MAV_CMD'][202] = EnumEntry('MAV_CMD_DO_DIGICAM_CONFIGURE', '''Mission command to configure an on-board camera controller system.''')
+enums['MAV_CMD'][202].param[1] = '''Modes: P, TV, AV, M, Etc'''
+enums['MAV_CMD'][202].param[2] = '''Shutter speed: Divisor number for one second'''
+enums['MAV_CMD'][202].param[3] = '''Aperture: F stop number'''
+enums['MAV_CMD'][202].param[4] = '''ISO number e.g. 80, 100, 200, Etc'''
+enums['MAV_CMD'][202].param[5] = '''Exposure type enumerator'''
+enums['MAV_CMD'][202].param[6] = '''Command Identity'''
+enums['MAV_CMD'][202].param[7] = '''Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)'''
+MAV_CMD_DO_DIGICAM_CONTROL = 203 # Mission command to control an on-board camera controller system.
+enums['MAV_CMD'][203] = EnumEntry('MAV_CMD_DO_DIGICAM_CONTROL', '''Mission command to control an on-board camera controller system.''')
+enums['MAV_CMD'][203].param[1] = '''Session control e.g. show/hide lens'''
+enums['MAV_CMD'][203].param[2] = '''Zoom's absolute position'''
+enums['MAV_CMD'][203].param[3] = '''Zooming step value to offset zoom from the current position'''
+enums['MAV_CMD'][203].param[4] = '''Focus Locking, Unlocking or Re-locking'''
+enums['MAV_CMD'][203].param[5] = '''Shooting Command'''
+enums['MAV_CMD'][203].param[6] = '''Command Identity'''
+enums['MAV_CMD'][203].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONFIGURE = 204 # Mission command to configure a camera or antenna mount
+enums['MAV_CMD'][204] = EnumEntry('MAV_CMD_DO_MOUNT_CONFIGURE', '''Mission command to configure a camera or antenna mount''')
+enums['MAV_CMD'][204].param[1] = '''Mount operation mode (see MAV_MOUNT_MODE enum)'''
+enums['MAV_CMD'][204].param[2] = '''stabilize roll? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[3] = '''stabilize pitch? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[4] = '''stabilize yaw? (1 = yes, 0 = no)'''
+enums['MAV_CMD'][204].param[5] = '''Empty'''
+enums['MAV_CMD'][204].param[6] = '''Empty'''
+enums['MAV_CMD'][204].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL = 205 # Mission command to control a camera or antenna mount
+enums['MAV_CMD'][205] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL', '''Mission command to control a camera or antenna mount''')
+enums['MAV_CMD'][205].param[1] = '''pitch or lat in degrees, depending on mount mode.'''
+enums['MAV_CMD'][205].param[2] = '''roll or lon in degrees depending on mount mode'''
+enums['MAV_CMD'][205].param[3] = '''yaw or alt (in meters) depending on mount mode'''
+enums['MAV_CMD'][205].param[4] = '''reserved'''
+enums['MAV_CMD'][205].param[5] = '''reserved'''
+enums['MAV_CMD'][205].param[6] = '''reserved'''
+enums['MAV_CMD'][205].param[7] = '''MAV_MOUNT_MODE enum value'''
+MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 # Mission command to set CAM_TRIGG_DIST for this flight
+enums['MAV_CMD'][206] = EnumEntry('MAV_CMD_DO_SET_CAM_TRIGG_DIST', '''Mission command to set CAM_TRIGG_DIST for this flight''')
+enums['MAV_CMD'][206].param[1] = '''Camera trigger distance (meters)'''
+enums['MAV_CMD'][206].param[2] = '''Empty'''
+enums['MAV_CMD'][206].param[3] = '''Empty'''
+enums['MAV_CMD'][206].param[4] = '''Empty'''
+enums['MAV_CMD'][206].param[5] = '''Empty'''
+enums['MAV_CMD'][206].param[6] = '''Empty'''
+enums['MAV_CMD'][206].param[7] = '''Empty'''
+MAV_CMD_DO_FENCE_ENABLE = 207 # Mission command to enable the geofence
+enums['MAV_CMD'][207] = EnumEntry('MAV_CMD_DO_FENCE_ENABLE', '''Mission command to enable the geofence''')
+enums['MAV_CMD'][207].param[1] = '''enable? (0=disable, 1=enable, 2=disable_floor_only)'''
+enums['MAV_CMD'][207].param[2] = '''Empty'''
+enums['MAV_CMD'][207].param[3] = '''Empty'''
+enums['MAV_CMD'][207].param[4] = '''Empty'''
+enums['MAV_CMD'][207].param[5] = '''Empty'''
+enums['MAV_CMD'][207].param[6] = '''Empty'''
+enums['MAV_CMD'][207].param[7] = '''Empty'''
+MAV_CMD_DO_PARACHUTE = 208 # Mission command to trigger a parachute
+enums['MAV_CMD'][208] = EnumEntry('MAV_CMD_DO_PARACHUTE', '''Mission command to trigger a parachute''')
+enums['MAV_CMD'][208].param[1] = '''action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)'''
+enums['MAV_CMD'][208].param[2] = '''Empty'''
+enums['MAV_CMD'][208].param[3] = '''Empty'''
+enums['MAV_CMD'][208].param[4] = '''Empty'''
+enums['MAV_CMD'][208].param[5] = '''Empty'''
+enums['MAV_CMD'][208].param[6] = '''Empty'''
+enums['MAV_CMD'][208].param[7] = '''Empty'''
+MAV_CMD_DO_MOTOR_TEST = 209 # Mission command to perform motor test
+enums['MAV_CMD'][209] = EnumEntry('MAV_CMD_DO_MOTOR_TEST', '''Mission command to perform motor test''')
+enums['MAV_CMD'][209].param[1] = '''motor sequence number (a number from 1 to max number of motors on the vehicle)'''
+enums['MAV_CMD'][209].param[2] = '''throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)'''
+enums['MAV_CMD'][209].param[3] = '''throttle'''
+enums['MAV_CMD'][209].param[4] = '''timeout (in seconds)'''
+enums['MAV_CMD'][209].param[5] = '''Empty'''
+enums['MAV_CMD'][209].param[6] = '''Empty'''
+enums['MAV_CMD'][209].param[7] = '''Empty'''
+MAV_CMD_DO_INVERTED_FLIGHT = 210 # Change to/from inverted flight
+enums['MAV_CMD'][210] = EnumEntry('MAV_CMD_DO_INVERTED_FLIGHT', '''Change to/from inverted flight''')
+enums['MAV_CMD'][210].param[1] = '''inverted (0=normal, 1=inverted)'''
+enums['MAV_CMD'][210].param[2] = '''Empty'''
+enums['MAV_CMD'][210].param[3] = '''Empty'''
+enums['MAV_CMD'][210].param[4] = '''Empty'''
+enums['MAV_CMD'][210].param[5] = '''Empty'''
+enums['MAV_CMD'][210].param[6] = '''Empty'''
+enums['MAV_CMD'][210].param[7] = '''Empty'''
+MAV_CMD_DO_SET_POSITION_YAW_THRUST = 213 # Sets a desired vehicle turn angle and thrust change
+enums['MAV_CMD'][213] = EnumEntry('MAV_CMD_DO_SET_POSITION_YAW_THRUST', '''Sets a desired vehicle turn angle and thrust change''')
+enums['MAV_CMD'][213].param[1] = '''yaw angle to adjust steering by in centidegress'''
+enums['MAV_CMD'][213].param[2] = '''Thrust - normalized to -2 .. 2'''
+enums['MAV_CMD'][213].param[3] = '''Empty'''
+enums['MAV_CMD'][213].param[4] = '''Empty'''
+enums['MAV_CMD'][213].param[5] = '''Empty'''
+enums['MAV_CMD'][213].param[6] = '''Empty'''
+enums['MAV_CMD'][213].param[7] = '''Empty'''
+MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 # Mission command to control a camera or antenna mount, using a
+ # quaternion as reference.
+enums['MAV_CMD'][220] = EnumEntry('MAV_CMD_DO_MOUNT_CONTROL_QUAT', '''Mission command to control a camera or antenna mount, using a quaternion as reference.''')
+enums['MAV_CMD'][220].param[1] = '''q1 - quaternion param #1, w (1 in null-rotation)'''
+enums['MAV_CMD'][220].param[2] = '''q2 - quaternion param #2, x (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[3] = '''q3 - quaternion param #3, y (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[4] = '''q4 - quaternion param #4, z (0 in null-rotation)'''
+enums['MAV_CMD'][220].param[5] = '''Empty'''
+enums['MAV_CMD'][220].param[6] = '''Empty'''
+enums['MAV_CMD'][220].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_MASTER = 221 # set id of master controller
+enums['MAV_CMD'][221] = EnumEntry('MAV_CMD_DO_GUIDED_MASTER', '''set id of master controller''')
+enums['MAV_CMD'][221].param[1] = '''System ID'''
+enums['MAV_CMD'][221].param[2] = '''Component ID'''
+enums['MAV_CMD'][221].param[3] = '''Empty'''
+enums['MAV_CMD'][221].param[4] = '''Empty'''
+enums['MAV_CMD'][221].param[5] = '''Empty'''
+enums['MAV_CMD'][221].param[6] = '''Empty'''
+enums['MAV_CMD'][221].param[7] = '''Empty'''
+MAV_CMD_DO_GUIDED_LIMITS = 222 # set limits for external control
+enums['MAV_CMD'][222] = EnumEntry('MAV_CMD_DO_GUIDED_LIMITS', '''set limits for external control''')
+enums['MAV_CMD'][222].param[1] = '''timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout'''
+enums['MAV_CMD'][222].param[2] = '''absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit'''
+enums['MAV_CMD'][222].param[3] = '''absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit'''
+enums['MAV_CMD'][222].param[4] = '''horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit'''
+enums['MAV_CMD'][222].param[5] = '''Empty'''
+enums['MAV_CMD'][222].param[6] = '''Empty'''
+enums['MAV_CMD'][222].param[7] = '''Empty'''
+MAV_CMD_DO_ENGINE_CONTROL = 223 # 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
+enums['MAV_CMD'][223] = EnumEntry('MAV_CMD_DO_ENGINE_CONTROL', '''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''')
+enums['MAV_CMD'][223].param[1] = '''0: Stop engine, 1:Start Engine'''
+enums['MAV_CMD'][223].param[2] = '''0: Warm start, 1:Cold start. Controls use of choke where applicable'''
+enums['MAV_CMD'][223].param[3] = '''Height delay (meters). 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.'''
+enums['MAV_CMD'][223].param[4] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[5] = '''Empty'''
+enums['MAV_CMD'][223].param[6] = '''Empty'''
+enums['MAV_CMD'][223].param[7] = '''Empty'''
+MAV_CMD_DO_LAST = 240 # NOP - This command is only used to mark the upper limit of the DO
+ # commands in the enumeration
+enums['MAV_CMD'][240] = EnumEntry('MAV_CMD_DO_LAST', '''NOP - This command is only used to mark the upper limit of the DO commands in the enumeration''')
+enums['MAV_CMD'][240].param[1] = '''Empty'''
+enums['MAV_CMD'][240].param[2] = '''Empty'''
+enums['MAV_CMD'][240].param[3] = '''Empty'''
+enums['MAV_CMD'][240].param[4] = '''Empty'''
+enums['MAV_CMD'][240].param[5] = '''Empty'''
+enums['MAV_CMD'][240].param[6] = '''Empty'''
+enums['MAV_CMD'][240].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_CALIBRATION = 241 # Trigger calibration. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][241] = EnumEntry('MAV_CMD_PREFLIGHT_CALIBRATION', '''Trigger calibration. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][241].param[1] = '''Gyro calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[2] = '''Magnetometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[3] = '''Ground pressure: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[4] = '''Radio calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[5] = '''Accelerometer calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[6] = '''Compass/Motor interference calibration: 0: no, 1: yes'''
+enums['MAV_CMD'][241].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 # Set sensor offsets. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][242] = EnumEntry('MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS', '''Set sensor offsets. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][242].param[1] = '''Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer'''
+enums['MAV_CMD'][242].param[2] = '''X axis offset (or generic dimension 1), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[3] = '''Y axis offset (or generic dimension 2), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[4] = '''Z axis offset (or generic dimension 3), in the sensor's raw units'''
+enums['MAV_CMD'][242].param[5] = '''Generic dimension 4, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[6] = '''Generic dimension 5, in the sensor's raw units'''
+enums['MAV_CMD'][242].param[7] = '''Generic dimension 6, in the sensor's raw units'''
+MAV_CMD_PREFLIGHT_UAVCAN = 243 # Trigger UAVCAN config. This command will be only accepted if in pre-
+ # flight mode.
+enums['MAV_CMD'][243] = EnumEntry('MAV_CMD_PREFLIGHT_UAVCAN', '''Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][243].param[1] = '''1: Trigger actuator ID assignment and direction mapping.'''
+enums['MAV_CMD'][243].param[2] = '''Reserved'''
+enums['MAV_CMD'][243].param[3] = '''Reserved'''
+enums['MAV_CMD'][243].param[4] = '''Reserved'''
+enums['MAV_CMD'][243].param[5] = '''Reserved'''
+enums['MAV_CMD'][243].param[6] = '''Reserved'''
+enums['MAV_CMD'][243].param[7] = '''Reserved'''
+MAV_CMD_PREFLIGHT_STORAGE = 245 # Request storage of different parameter values and logs. This command
+ # will be only accepted if in pre-flight mode.
+enums['MAV_CMD'][245] = EnumEntry('MAV_CMD_PREFLIGHT_STORAGE', '''Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.''')
+enums['MAV_CMD'][245].param[1] = '''Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[2] = '''Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults'''
+enums['MAV_CMD'][245].param[3] = '''Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)'''
+enums['MAV_CMD'][245].param[4] = '''Reserved'''
+enums['MAV_CMD'][245].param[5] = '''Empty'''
+enums['MAV_CMD'][245].param[6] = '''Empty'''
+enums['MAV_CMD'][245].param[7] = '''Empty'''
+MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 # Request the reboot or shutdown of system components.
+enums['MAV_CMD'][246] = EnumEntry('MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN', '''Request the reboot or shutdown of system components.''')
+enums['MAV_CMD'][246].param[1] = '''0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.'''
+enums['MAV_CMD'][246].param[2] = '''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.'''
+enums['MAV_CMD'][246].param[3] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[4] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[5] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[6] = '''Reserved, send 0'''
+enums['MAV_CMD'][246].param[7] = '''Reserved, send 0'''
+MAV_CMD_OVERRIDE_GOTO = 252 # Hold / continue the current action
+enums['MAV_CMD'][252] = EnumEntry('MAV_CMD_OVERRIDE_GOTO', '''Hold / continue the current action''')
+enums['MAV_CMD'][252].param[1] = '''MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan'''
+enums['MAV_CMD'][252].param[2] = '''MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position'''
+enums['MAV_CMD'][252].param[3] = '''MAV_FRAME coordinate frame of hold point'''
+enums['MAV_CMD'][252].param[4] = '''Desired yaw angle in degrees'''
+enums['MAV_CMD'][252].param[5] = '''Latitude / X position'''
+enums['MAV_CMD'][252].param[6] = '''Longitude / Y position'''
+enums['MAV_CMD'][252].param[7] = '''Altitude / Z position'''
+MAV_CMD_MISSION_START = 300 # start running a mission
+enums['MAV_CMD'][300] = EnumEntry('MAV_CMD_MISSION_START', '''start running a mission''')
+enums['MAV_CMD'][300].param[1] = '''first_item: the first mission item to run'''
+enums['MAV_CMD'][300].param[2] = '''last_item: the last mission item to run (after this item is run, the mission ends)'''
+MAV_CMD_COMPONENT_ARM_DISARM = 400 # Arms / Disarms a component
+enums['MAV_CMD'][400] = EnumEntry('MAV_CMD_COMPONENT_ARM_DISARM', '''Arms / Disarms a component''')
+enums['MAV_CMD'][400].param[1] = '''1 to arm, 0 to disarm'''
+MAV_CMD_GET_HOME_POSITION = 410 # Request the home position from the vehicle.
+enums['MAV_CMD'][410] = EnumEntry('MAV_CMD_GET_HOME_POSITION', '''Request the home position from the vehicle.''')
+enums['MAV_CMD'][410].param[1] = '''Reserved'''
+enums['MAV_CMD'][410].param[2] = '''Reserved'''
+enums['MAV_CMD'][410].param[3] = '''Reserved'''
+enums['MAV_CMD'][410].param[4] = '''Reserved'''
+enums['MAV_CMD'][410].param[5] = '''Reserved'''
+enums['MAV_CMD'][410].param[6] = '''Reserved'''
+enums['MAV_CMD'][410].param[7] = '''Reserved'''
+MAV_CMD_START_RX_PAIR = 500 # Starts receiver pairing
+enums['MAV_CMD'][500] = EnumEntry('MAV_CMD_START_RX_PAIR', '''Starts receiver pairing''')
+enums['MAV_CMD'][500].param[1] = '''0:Spektrum'''
+enums['MAV_CMD'][500].param[2] = '''0:Spektrum DSM2, 1:Spektrum DSMX'''
+MAV_CMD_GET_MESSAGE_INTERVAL = 510 # Request the interval between messages for a particular MAVLink message
+ # ID
+enums['MAV_CMD'][510] = EnumEntry('MAV_CMD_GET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID''')
+enums['MAV_CMD'][510].param[1] = '''The MAVLink message ID'''
+MAV_CMD_SET_MESSAGE_INTERVAL = 511 # Request the interval between messages for a particular MAVLink message
+ # ID. This interface replaces
+ # REQUEST_DATA_STREAM
+enums['MAV_CMD'][511] = EnumEntry('MAV_CMD_SET_MESSAGE_INTERVAL', '''Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM''')
+enums['MAV_CMD'][511].param[1] = '''The MAVLink message ID'''
+enums['MAV_CMD'][511].param[2] = '''The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.'''
+MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 # Request autopilot capabilities
+enums['MAV_CMD'][520] = EnumEntry('MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES', '''Request autopilot capabilities''')
+enums['MAV_CMD'][520].param[1] = '''1: Request autopilot version'''
+enums['MAV_CMD'][520].param[2] = '''Reserved (all remaining params)'''
+MAV_CMD_IMAGE_START_CAPTURE = 2000 # Start image capture sequence
+enums['MAV_CMD'][2000] = EnumEntry('MAV_CMD_IMAGE_START_CAPTURE', '''Start image capture sequence''')
+enums['MAV_CMD'][2000].param[1] = '''Duration between two consecutive pictures (in seconds)'''
+enums['MAV_CMD'][2000].param[2] = '''Number of images to capture total - 0 for unlimited capture'''
+enums['MAV_CMD'][2000].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_IMAGE_STOP_CAPTURE = 2001 # Stop image capture sequence
+enums['MAV_CMD'][2001] = EnumEntry('MAV_CMD_IMAGE_STOP_CAPTURE', '''Stop image capture sequence''')
+enums['MAV_CMD'][2001].param[1] = '''Reserved'''
+enums['MAV_CMD'][2001].param[2] = '''Reserved'''
+MAV_CMD_DO_TRIGGER_CONTROL = 2003 # Enable or disable on-board camera triggering system.
+enums['MAV_CMD'][2003] = EnumEntry('MAV_CMD_DO_TRIGGER_CONTROL', '''Enable or disable on-board camera triggering system.''')
+enums['MAV_CMD'][2003].param[1] = '''Trigger enable/disable (0 for disable, 1 for start)'''
+enums['MAV_CMD'][2003].param[2] = '''Shutter integration time (in ms)'''
+enums['MAV_CMD'][2003].param[3] = '''Reserved'''
+MAV_CMD_VIDEO_START_CAPTURE = 2500 # Starts video capture
+enums['MAV_CMD'][2500] = EnumEntry('MAV_CMD_VIDEO_START_CAPTURE', '''Starts video capture''')
+enums['MAV_CMD'][2500].param[1] = '''Camera ID (0 for all cameras), 1 for first, 2 for second, etc.'''
+enums['MAV_CMD'][2500].param[2] = '''Frames per second'''
+enums['MAV_CMD'][2500].param[3] = '''Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)'''
+MAV_CMD_VIDEO_STOP_CAPTURE = 2501 # Stop the current video capture
+enums['MAV_CMD'][2501] = EnumEntry('MAV_CMD_VIDEO_STOP_CAPTURE', '''Stop the current video capture''')
+enums['MAV_CMD'][2501].param[1] = '''Reserved'''
+enums['MAV_CMD'][2501].param[2] = '''Reserved'''
+MAV_CMD_PANORAMA_CREATE = 2800 # Create a panorama at the current position
+enums['MAV_CMD'][2800] = EnumEntry('MAV_CMD_PANORAMA_CREATE', '''Create a panorama at the current position''')
+enums['MAV_CMD'][2800].param[1] = '''Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)'''
+enums['MAV_CMD'][2800].param[2] = '''Viewing angle vertical of panorama (in degrees)'''
+enums['MAV_CMD'][2800].param[3] = '''Speed of the horizontal rotation (in degrees per second)'''
+enums['MAV_CMD'][2800].param[4] = '''Speed of the vertical rotation (in degrees per second)'''
+MAV_CMD_DO_VTOL_TRANSITION = 3000 # Request VTOL transition
+enums['MAV_CMD'][3000] = EnumEntry('MAV_CMD_DO_VTOL_TRANSITION', '''Request VTOL transition''')
+enums['MAV_CMD'][3000].param[1] = '''The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.'''
+MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 # 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
+ # velocites along all three axes.
+enums['MAV_CMD'][4000] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_STANDARD', '''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 velocites along all three axes.
+ ''')
+MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 # 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.
+enums['MAV_CMD'][4001] = EnumEntry('MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE', '''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.
+ ''')
+enums['MAV_CMD'][4001].param[1] = '''Radius of desired circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[2] = '''User defined'''
+enums['MAV_CMD'][4001].param[3] = '''User defined'''
+enums['MAV_CMD'][4001].param[4] = '''User defined'''
+enums['MAV_CMD'][4001].param[5] = '''Unscaled target latitude of center of circle in CIRCLE_MODE'''
+enums['MAV_CMD'][4001].param[6] = '''Unscaled target longitude of center of circle in CIRCLE_MODE'''
+MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 # Deploy payload on a Lat / Lon / Alt position. This includes the
+ # navigation to reach the required release
+ # position and velocity.
+enums['MAV_CMD'][30001] = EnumEntry('MAV_CMD_PAYLOAD_PREPARE_DEPLOY', '''Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.''')
+enums['MAV_CMD'][30001].param[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.'''
+enums['MAV_CMD'][30001].param[2] = '''Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.'''
+enums['MAV_CMD'][30001].param[3] = '''Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.'''
+enums['MAV_CMD'][30001].param[4] = '''Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.'''
+enums['MAV_CMD'][30001].param[5] = '''Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[6] = '''Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT'''
+enums['MAV_CMD'][30001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 # Control the payload deployment.
+enums['MAV_CMD'][30002] = EnumEntry('MAV_CMD_PAYLOAD_CONTROL_DEPLOY', '''Control the payload deployment.''')
+enums['MAV_CMD'][30002].param[1] = '''Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.'''
+enums['MAV_CMD'][30002].param[2] = '''Reserved'''
+enums['MAV_CMD'][30002].param[3] = '''Reserved'''
+enums['MAV_CMD'][30002].param[4] = '''Reserved'''
+enums['MAV_CMD'][30002].param[5] = '''Reserved'''
+enums['MAV_CMD'][30002].param[6] = '''Reserved'''
+enums['MAV_CMD'][30002].param[7] = '''Reserved'''
+MAV_CMD_WAYPOINT_USER_1 = 31000 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31000] = EnumEntry('MAV_CMD_WAYPOINT_USER_1', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31000].param[1] = '''User defined'''
+enums['MAV_CMD'][31000].param[2] = '''User defined'''
+enums['MAV_CMD'][31000].param[3] = '''User defined'''
+enums['MAV_CMD'][31000].param[4] = '''User defined'''
+enums['MAV_CMD'][31000].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31000].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31000].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_2 = 31001 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31001] = EnumEntry('MAV_CMD_WAYPOINT_USER_2', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31001].param[1] = '''User defined'''
+enums['MAV_CMD'][31001].param[2] = '''User defined'''
+enums['MAV_CMD'][31001].param[3] = '''User defined'''
+enums['MAV_CMD'][31001].param[4] = '''User defined'''
+enums['MAV_CMD'][31001].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31001].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31001].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_3 = 31002 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31002] = EnumEntry('MAV_CMD_WAYPOINT_USER_3', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31002].param[1] = '''User defined'''
+enums['MAV_CMD'][31002].param[2] = '''User defined'''
+enums['MAV_CMD'][31002].param[3] = '''User defined'''
+enums['MAV_CMD'][31002].param[4] = '''User defined'''
+enums['MAV_CMD'][31002].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31002].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31002].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_4 = 31003 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31003] = EnumEntry('MAV_CMD_WAYPOINT_USER_4', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31003].param[1] = '''User defined'''
+enums['MAV_CMD'][31003].param[2] = '''User defined'''
+enums['MAV_CMD'][31003].param[3] = '''User defined'''
+enums['MAV_CMD'][31003].param[4] = '''User defined'''
+enums['MAV_CMD'][31003].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31003].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31003].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_WAYPOINT_USER_5 = 31004 # User defined waypoint item. Ground Station will show the Vehicle as
+ # flying through this item.
+enums['MAV_CMD'][31004] = EnumEntry('MAV_CMD_WAYPOINT_USER_5', '''User defined waypoint item. Ground Station will show the Vehicle as flying through this item.''')
+enums['MAV_CMD'][31004].param[1] = '''User defined'''
+enums['MAV_CMD'][31004].param[2] = '''User defined'''
+enums['MAV_CMD'][31004].param[3] = '''User defined'''
+enums['MAV_CMD'][31004].param[4] = '''User defined'''
+enums['MAV_CMD'][31004].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31004].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31004].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_1 = 31005 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31005] = EnumEntry('MAV_CMD_SPATIAL_USER_1', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31005].param[1] = '''User defined'''
+enums['MAV_CMD'][31005].param[2] = '''User defined'''
+enums['MAV_CMD'][31005].param[3] = '''User defined'''
+enums['MAV_CMD'][31005].param[4] = '''User defined'''
+enums['MAV_CMD'][31005].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31005].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31005].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_2 = 31006 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31006] = EnumEntry('MAV_CMD_SPATIAL_USER_2', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31006].param[1] = '''User defined'''
+enums['MAV_CMD'][31006].param[2] = '''User defined'''
+enums['MAV_CMD'][31006].param[3] = '''User defined'''
+enums['MAV_CMD'][31006].param[4] = '''User defined'''
+enums['MAV_CMD'][31006].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31006].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31006].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_3 = 31007 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31007] = EnumEntry('MAV_CMD_SPATIAL_USER_3', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31007].param[1] = '''User defined'''
+enums['MAV_CMD'][31007].param[2] = '''User defined'''
+enums['MAV_CMD'][31007].param[3] = '''User defined'''
+enums['MAV_CMD'][31007].param[4] = '''User defined'''
+enums['MAV_CMD'][31007].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31007].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31007].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_4 = 31008 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31008] = EnumEntry('MAV_CMD_SPATIAL_USER_4', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31008].param[1] = '''User defined'''
+enums['MAV_CMD'][31008].param[2] = '''User defined'''
+enums['MAV_CMD'][31008].param[3] = '''User defined'''
+enums['MAV_CMD'][31008].param[4] = '''User defined'''
+enums['MAV_CMD'][31008].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31008].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31008].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_SPATIAL_USER_5 = 31009 # User defined spatial item. Ground Station will not show the Vehicle as
+ # flying through this item. Example: ROI item.
+enums['MAV_CMD'][31009] = EnumEntry('MAV_CMD_SPATIAL_USER_5', '''User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.''')
+enums['MAV_CMD'][31009].param[1] = '''User defined'''
+enums['MAV_CMD'][31009].param[2] = '''User defined'''
+enums['MAV_CMD'][31009].param[3] = '''User defined'''
+enums['MAV_CMD'][31009].param[4] = '''User defined'''
+enums['MAV_CMD'][31009].param[5] = '''Latitude unscaled'''
+enums['MAV_CMD'][31009].param[6] = '''Longitude unscaled'''
+enums['MAV_CMD'][31009].param[7] = '''Altitude, in meters AMSL'''
+MAV_CMD_USER_1 = 31010 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31010] = EnumEntry('MAV_CMD_USER_1', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31010].param[1] = '''User defined'''
+enums['MAV_CMD'][31010].param[2] = '''User defined'''
+enums['MAV_CMD'][31010].param[3] = '''User defined'''
+enums['MAV_CMD'][31010].param[4] = '''User defined'''
+enums['MAV_CMD'][31010].param[5] = '''User defined'''
+enums['MAV_CMD'][31010].param[6] = '''User defined'''
+enums['MAV_CMD'][31010].param[7] = '''User defined'''
+MAV_CMD_USER_2 = 31011 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31011] = EnumEntry('MAV_CMD_USER_2', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31011].param[1] = '''User defined'''
+enums['MAV_CMD'][31011].param[2] = '''User defined'''
+enums['MAV_CMD'][31011].param[3] = '''User defined'''
+enums['MAV_CMD'][31011].param[4] = '''User defined'''
+enums['MAV_CMD'][31011].param[5] = '''User defined'''
+enums['MAV_CMD'][31011].param[6] = '''User defined'''
+enums['MAV_CMD'][31011].param[7] = '''User defined'''
+MAV_CMD_USER_3 = 31012 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31012] = EnumEntry('MAV_CMD_USER_3', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31012].param[1] = '''User defined'''
+enums['MAV_CMD'][31012].param[2] = '''User defined'''
+enums['MAV_CMD'][31012].param[3] = '''User defined'''
+enums['MAV_CMD'][31012].param[4] = '''User defined'''
+enums['MAV_CMD'][31012].param[5] = '''User defined'''
+enums['MAV_CMD'][31012].param[6] = '''User defined'''
+enums['MAV_CMD'][31012].param[7] = '''User defined'''
+MAV_CMD_USER_4 = 31013 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31013] = EnumEntry('MAV_CMD_USER_4', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31013].param[1] = '''User defined'''
+enums['MAV_CMD'][31013].param[2] = '''User defined'''
+enums['MAV_CMD'][31013].param[3] = '''User defined'''
+enums['MAV_CMD'][31013].param[4] = '''User defined'''
+enums['MAV_CMD'][31013].param[5] = '''User defined'''
+enums['MAV_CMD'][31013].param[6] = '''User defined'''
+enums['MAV_CMD'][31013].param[7] = '''User defined'''
+MAV_CMD_USER_5 = 31014 # User defined command. Ground Station will not show the Vehicle as
+ # flying through this item. Example:
+ # MAV_CMD_DO_SET_PARAMETER item.
+enums['MAV_CMD'][31014] = EnumEntry('MAV_CMD_USER_5', '''User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.''')
+enums['MAV_CMD'][31014].param[1] = '''User defined'''
+enums['MAV_CMD'][31014].param[2] = '''User defined'''
+enums['MAV_CMD'][31014].param[3] = '''User defined'''
+enums['MAV_CMD'][31014].param[4] = '''User defined'''
+enums['MAV_CMD'][31014].param[5] = '''User defined'''
+enums['MAV_CMD'][31014].param[6] = '''User defined'''
+enums['MAV_CMD'][31014].param[7] = '''User defined'''
+MAV_CMD_ENUM_END = 31015 #
+enums['MAV_CMD'][31015] = EnumEntry('MAV_CMD_ENUM_END', '''''')
+
+# MAV_DATA_STREAM
+enums['MAV_DATA_STREAM'] = {}
+MAV_DATA_STREAM_ALL = 0 # Enable all data streams
+enums['MAV_DATA_STREAM'][0] = EnumEntry('MAV_DATA_STREAM_ALL', '''Enable all data streams''')
+MAV_DATA_STREAM_RAW_SENSORS = 1 # Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+enums['MAV_DATA_STREAM'][1] = EnumEntry('MAV_DATA_STREAM_RAW_SENSORS', '''Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.''')
+MAV_DATA_STREAM_EXTENDED_STATUS = 2 # Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+enums['MAV_DATA_STREAM'][2] = EnumEntry('MAV_DATA_STREAM_EXTENDED_STATUS', '''Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS''')
+MAV_DATA_STREAM_RC_CHANNELS = 3 # Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+enums['MAV_DATA_STREAM'][3] = EnumEntry('MAV_DATA_STREAM_RC_CHANNELS', '''Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW''')
+MAV_DATA_STREAM_RAW_CONTROLLER = 4 # Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT,
+ # NAV_CONTROLLER_OUTPUT.
+enums['MAV_DATA_STREAM'][4] = EnumEntry('MAV_DATA_STREAM_RAW_CONTROLLER', '''Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.''')
+MAV_DATA_STREAM_POSITION = 6 # Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+enums['MAV_DATA_STREAM'][6] = EnumEntry('MAV_DATA_STREAM_POSITION', '''Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.''')
+MAV_DATA_STREAM_EXTRA1 = 10 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][10] = EnumEntry('MAV_DATA_STREAM_EXTRA1', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA2 = 11 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][11] = EnumEntry('MAV_DATA_STREAM_EXTRA2', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_EXTRA3 = 12 # Dependent on the autopilot
+enums['MAV_DATA_STREAM'][12] = EnumEntry('MAV_DATA_STREAM_EXTRA3', '''Dependent on the autopilot''')
+MAV_DATA_STREAM_ENUM_END = 13 #
+enums['MAV_DATA_STREAM'][13] = EnumEntry('MAV_DATA_STREAM_ENUM_END', '''''')
+
+# MAV_ROI
+enums['MAV_ROI'] = {}
+MAV_ROI_NONE = 0 # No region of interest.
+enums['MAV_ROI'][0] = EnumEntry('MAV_ROI_NONE', '''No region of interest.''')
+MAV_ROI_WPNEXT = 1 # Point toward next MISSION.
+enums['MAV_ROI'][1] = EnumEntry('MAV_ROI_WPNEXT', '''Point toward next MISSION.''')
+MAV_ROI_WPINDEX = 2 # Point toward given MISSION.
+enums['MAV_ROI'][2] = EnumEntry('MAV_ROI_WPINDEX', '''Point toward given MISSION.''')
+MAV_ROI_LOCATION = 3 # Point toward fixed location.
+enums['MAV_ROI'][3] = EnumEntry('MAV_ROI_LOCATION', '''Point toward fixed location.''')
+MAV_ROI_TARGET = 4 # Point toward of given id.
+enums['MAV_ROI'][4] = EnumEntry('MAV_ROI_TARGET', '''Point toward of given id.''')
+MAV_ROI_ENUM_END = 5 #
+enums['MAV_ROI'][5] = EnumEntry('MAV_ROI_ENUM_END', '''''')
+
+# MAV_CMD_ACK
+enums['MAV_CMD_ACK'] = {}
+MAV_CMD_ACK_OK = 1 # Command / mission item is ok.
+enums['MAV_CMD_ACK'][1] = EnumEntry('MAV_CMD_ACK_OK', '''Command / mission item is ok.''')
+MAV_CMD_ACK_ERR_FAIL = 2 # Generic error message if none of the other reasons fails or if no
+ # detailed error reporting is implemented.
+enums['MAV_CMD_ACK'][2] = EnumEntry('MAV_CMD_ACK_ERR_FAIL', '''Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.''')
+MAV_CMD_ACK_ERR_ACCESS_DENIED = 3 # The system is refusing to accept this command from this source /
+ # communication partner.
+enums['MAV_CMD_ACK'][3] = EnumEntry('MAV_CMD_ACK_ERR_ACCESS_DENIED', '''The system is refusing to accept this command from this source / communication partner.''')
+MAV_CMD_ACK_ERR_NOT_SUPPORTED = 4 # Command or mission item is not supported, other commands would be
+ # accepted.
+enums['MAV_CMD_ACK'][4] = EnumEntry('MAV_CMD_ACK_ERR_NOT_SUPPORTED', '''Command or mission item is not supported, other commands would be accepted.''')
+MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 5 # The coordinate frame of this command / mission item is not supported.
+enums['MAV_CMD_ACK'][5] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED', '''The coordinate frame of this command / mission item is not supported.''')
+MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 6 # The coordinate frame of this command is ok, but he coordinate values
+ # exceed the safety limits of this system.
+ # This is a generic error, please use the more
+ # specific error messages below if possible.
+enums['MAV_CMD_ACK'][6] = EnumEntry('MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE', '''The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.''')
+MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 7 # The X or latitude value is out of range.
+enums['MAV_CMD_ACK'][7] = EnumEntry('MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE', '''The X or latitude value is out of range.''')
+MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 8 # The Y or longitude value is out of range.
+enums['MAV_CMD_ACK'][8] = EnumEntry('MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE', '''The Y or longitude value is out of range.''')
+MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 9 # The Z or altitude value is out of range.
+enums['MAV_CMD_ACK'][9] = EnumEntry('MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE', '''The Z or altitude value is out of range.''')
+MAV_CMD_ACK_ENUM_END = 10 #
+enums['MAV_CMD_ACK'][10] = EnumEntry('MAV_CMD_ACK_ENUM_END', '''''')
+
+# MAV_PARAM_TYPE
+enums['MAV_PARAM_TYPE'] = {}
+MAV_PARAM_TYPE_UINT8 = 1 # 8-bit unsigned integer
+enums['MAV_PARAM_TYPE'][1] = EnumEntry('MAV_PARAM_TYPE_UINT8', '''8-bit unsigned integer''')
+MAV_PARAM_TYPE_INT8 = 2 # 8-bit signed integer
+enums['MAV_PARAM_TYPE'][2] = EnumEntry('MAV_PARAM_TYPE_INT8', '''8-bit signed integer''')
+MAV_PARAM_TYPE_UINT16 = 3 # 16-bit unsigned integer
+enums['MAV_PARAM_TYPE'][3] = EnumEntry('MAV_PARAM_TYPE_UINT16', '''16-bit unsigned integer''')
+MAV_PARAM_TYPE_INT16 = 4 # 16-bit signed integer
+enums['MAV_PARAM_TYPE'][4] = EnumEntry('MAV_PARAM_TYPE_INT16', '''16-bit signed integer''')
+MAV_PARAM_TYPE_UINT32 = 5 # 32-bit unsigned integer
+enums['MAV_PARAM_TYPE'][5] = EnumEntry('MAV_PARAM_TYPE_UINT32', '''32-bit unsigned integer''')
+MAV_PARAM_TYPE_INT32 = 6 # 32-bit signed integer
+enums['MAV_PARAM_TYPE'][6] = EnumEntry('MAV_PARAM_TYPE_INT32', '''32-bit signed integer''')
+MAV_PARAM_TYPE_UINT64 = 7 # 64-bit unsigned integer
+enums['MAV_PARAM_TYPE'][7] = EnumEntry('MAV_PARAM_TYPE_UINT64', '''64-bit unsigned integer''')
+MAV_PARAM_TYPE_INT64 = 8 # 64-bit signed integer
+enums['MAV_PARAM_TYPE'][8] = EnumEntry('MAV_PARAM_TYPE_INT64', '''64-bit signed integer''')
+MAV_PARAM_TYPE_REAL32 = 9 # 32-bit floating-point
+enums['MAV_PARAM_TYPE'][9] = EnumEntry('MAV_PARAM_TYPE_REAL32', '''32-bit floating-point''')
+MAV_PARAM_TYPE_REAL64 = 10 # 64-bit floating-point
+enums['MAV_PARAM_TYPE'][10] = EnumEntry('MAV_PARAM_TYPE_REAL64', '''64-bit floating-point''')
+MAV_PARAM_TYPE_ENUM_END = 11 #
+enums['MAV_PARAM_TYPE'][11] = EnumEntry('MAV_PARAM_TYPE_ENUM_END', '''''')
+
+# MAV_RESULT
+enums['MAV_RESULT'] = {}
+MAV_RESULT_ACCEPTED = 0 # Command ACCEPTED and EXECUTED
+enums['MAV_RESULT'][0] = EnumEntry('MAV_RESULT_ACCEPTED', '''Command ACCEPTED and EXECUTED''')
+MAV_RESULT_TEMPORARILY_REJECTED = 1 # Command TEMPORARY REJECTED/DENIED
+enums['MAV_RESULT'][1] = EnumEntry('MAV_RESULT_TEMPORARILY_REJECTED', '''Command TEMPORARY REJECTED/DENIED''')
+MAV_RESULT_DENIED = 2 # Command PERMANENTLY DENIED
+enums['MAV_RESULT'][2] = EnumEntry('MAV_RESULT_DENIED', '''Command PERMANENTLY DENIED''')
+MAV_RESULT_UNSUPPORTED = 3 # Command UNKNOWN/UNSUPPORTED
+enums['MAV_RESULT'][3] = EnumEntry('MAV_RESULT_UNSUPPORTED', '''Command UNKNOWN/UNSUPPORTED''')
+MAV_RESULT_FAILED = 4 # Command executed, but failed
+enums['MAV_RESULT'][4] = EnumEntry('MAV_RESULT_FAILED', '''Command executed, but failed''')
+MAV_RESULT_ENUM_END = 5 #
+enums['MAV_RESULT'][5] = EnumEntry('MAV_RESULT_ENUM_END', '''''')
+
+# MAV_MISSION_RESULT
+enums['MAV_MISSION_RESULT'] = {}
+MAV_MISSION_ACCEPTED = 0 # mission accepted OK
+enums['MAV_MISSION_RESULT'][0] = EnumEntry('MAV_MISSION_ACCEPTED', '''mission accepted OK''')
+MAV_MISSION_ERROR = 1 # generic error / not accepting mission commands at all right now
+enums['MAV_MISSION_RESULT'][1] = EnumEntry('MAV_MISSION_ERROR', '''generic error / not accepting mission commands at all right now''')
+MAV_MISSION_UNSUPPORTED_FRAME = 2 # coordinate frame is not supported
+enums['MAV_MISSION_RESULT'][2] = EnumEntry('MAV_MISSION_UNSUPPORTED_FRAME', '''coordinate frame is not supported''')
+MAV_MISSION_UNSUPPORTED = 3 # command is not supported
+enums['MAV_MISSION_RESULT'][3] = EnumEntry('MAV_MISSION_UNSUPPORTED', '''command is not supported''')
+MAV_MISSION_NO_SPACE = 4 # mission item exceeds storage space
+enums['MAV_MISSION_RESULT'][4] = EnumEntry('MAV_MISSION_NO_SPACE', '''mission item exceeds storage space''')
+MAV_MISSION_INVALID = 5 # one of the parameters has an invalid value
+enums['MAV_MISSION_RESULT'][5] = EnumEntry('MAV_MISSION_INVALID', '''one of the parameters has an invalid value''')
+MAV_MISSION_INVALID_PARAM1 = 6 # param1 has an invalid value
+enums['MAV_MISSION_RESULT'][6] = EnumEntry('MAV_MISSION_INVALID_PARAM1', '''param1 has an invalid value''')
+MAV_MISSION_INVALID_PARAM2 = 7 # param2 has an invalid value
+enums['MAV_MISSION_RESULT'][7] = EnumEntry('MAV_MISSION_INVALID_PARAM2', '''param2 has an invalid value''')
+MAV_MISSION_INVALID_PARAM3 = 8 # param3 has an invalid value
+enums['MAV_MISSION_RESULT'][8] = EnumEntry('MAV_MISSION_INVALID_PARAM3', '''param3 has an invalid value''')
+MAV_MISSION_INVALID_PARAM4 = 9 # param4 has an invalid value
+enums['MAV_MISSION_RESULT'][9] = EnumEntry('MAV_MISSION_INVALID_PARAM4', '''param4 has an invalid value''')
+MAV_MISSION_INVALID_PARAM5_X = 10 # x/param5 has an invalid value
+enums['MAV_MISSION_RESULT'][10] = EnumEntry('MAV_MISSION_INVALID_PARAM5_X', '''x/param5 has an invalid value''')
+MAV_MISSION_INVALID_PARAM6_Y = 11 # y/param6 has an invalid value
+enums['MAV_MISSION_RESULT'][11] = EnumEntry('MAV_MISSION_INVALID_PARAM6_Y', '''y/param6 has an invalid value''')
+MAV_MISSION_INVALID_PARAM7 = 12 # param7 has an invalid value
+enums['MAV_MISSION_RESULT'][12] = EnumEntry('MAV_MISSION_INVALID_PARAM7', '''param7 has an invalid value''')
+MAV_MISSION_INVALID_SEQUENCE = 13 # received waypoint out of sequence
+enums['MAV_MISSION_RESULT'][13] = EnumEntry('MAV_MISSION_INVALID_SEQUENCE', '''received waypoint out of sequence''')
+MAV_MISSION_DENIED = 14 # not accepting any mission commands from this communication partner
+enums['MAV_MISSION_RESULT'][14] = EnumEntry('MAV_MISSION_DENIED', '''not accepting any mission commands from this communication partner''')
+MAV_MISSION_RESULT_ENUM_END = 15 #
+enums['MAV_MISSION_RESULT'][15] = EnumEntry('MAV_MISSION_RESULT_ENUM_END', '''''')
+
+# MAV_SEVERITY
+enums['MAV_SEVERITY'] = {}
+MAV_SEVERITY_EMERGENCY = 0 # System is unusable. This is a "panic" condition.
+enums['MAV_SEVERITY'][0] = EnumEntry('MAV_SEVERITY_EMERGENCY', '''System is unusable. This is a "panic" condition.''')
+MAV_SEVERITY_ALERT = 1 # Action should be taken immediately. Indicates error in non-critical
+ # systems.
+enums['MAV_SEVERITY'][1] = EnumEntry('MAV_SEVERITY_ALERT', '''Action should be taken immediately. Indicates error in non-critical systems.''')
+MAV_SEVERITY_CRITICAL = 2 # Action must be taken immediately. Indicates failure in a primary
+ # system.
+enums['MAV_SEVERITY'][2] = EnumEntry('MAV_SEVERITY_CRITICAL', '''Action must be taken immediately. Indicates failure in a primary system.''')
+MAV_SEVERITY_ERROR = 3 # Indicates an error in secondary/redundant systems.
+enums['MAV_SEVERITY'][3] = EnumEntry('MAV_SEVERITY_ERROR', '''Indicates an error in secondary/redundant systems.''')
+MAV_SEVERITY_WARNING = 4 # Indicates about a possible future error if this is not resolved within
+ # a given timeframe. Example would be a low
+ # battery warning.
+enums['MAV_SEVERITY'][4] = EnumEntry('MAV_SEVERITY_WARNING', '''Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.''')
+MAV_SEVERITY_NOTICE = 5 # An unusual event has occured, though not an error condition. This
+ # should be investigated for the root cause.
+enums['MAV_SEVERITY'][5] = EnumEntry('MAV_SEVERITY_NOTICE', '''An unusual event has occured, though not an error condition. This should be investigated for the root cause.''')
+MAV_SEVERITY_INFO = 6 # Normal operational messages. Useful for logging. No action is required
+ # for these messages.
+enums['MAV_SEVERITY'][6] = EnumEntry('MAV_SEVERITY_INFO', '''Normal operational messages. Useful for logging. No action is required for these messages.''')
+MAV_SEVERITY_DEBUG = 7 # Useful non-operational messages that can assist in debugging. These
+ # should not occur during normal operation.
+enums['MAV_SEVERITY'][7] = EnumEntry('MAV_SEVERITY_DEBUG', '''Useful non-operational messages that can assist in debugging. These should not occur during normal operation.''')
+MAV_SEVERITY_ENUM_END = 8 #
+enums['MAV_SEVERITY'][8] = EnumEntry('MAV_SEVERITY_ENUM_END', '''''')
+
+# MAV_POWER_STATUS
+enums['MAV_POWER_STATUS'] = {}
+MAV_POWER_STATUS_BRICK_VALID = 1 # main brick power supply valid
+enums['MAV_POWER_STATUS'][1] = EnumEntry('MAV_POWER_STATUS_BRICK_VALID', '''main brick power supply valid''')
+MAV_POWER_STATUS_SERVO_VALID = 2 # main servo power supply valid for FMU
+enums['MAV_POWER_STATUS'][2] = EnumEntry('MAV_POWER_STATUS_SERVO_VALID', '''main servo power supply valid for FMU''')
+MAV_POWER_STATUS_USB_CONNECTED = 4 # USB power is connected
+enums['MAV_POWER_STATUS'][4] = EnumEntry('MAV_POWER_STATUS_USB_CONNECTED', '''USB power is connected''')
+MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 # peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][8] = EnumEntry('MAV_POWER_STATUS_PERIPH_OVERCURRENT', '''peripheral supply is in over-current state''')
+MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 # hi-power peripheral supply is in over-current state
+enums['MAV_POWER_STATUS'][16] = EnumEntry('MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT', '''hi-power peripheral supply is in over-current state''')
+MAV_POWER_STATUS_CHANGED = 32 # Power status has changed since boot
+enums['MAV_POWER_STATUS'][32] = EnumEntry('MAV_POWER_STATUS_CHANGED', '''Power status has changed since boot''')
+MAV_POWER_STATUS_ENUM_END = 33 #
+enums['MAV_POWER_STATUS'][33] = EnumEntry('MAV_POWER_STATUS_ENUM_END', '''''')
+
+# SERIAL_CONTROL_DEV
+enums['SERIAL_CONTROL_DEV'] = {}
+SERIAL_CONTROL_DEV_TELEM1 = 0 # First telemetry port
+enums['SERIAL_CONTROL_DEV'][0] = EnumEntry('SERIAL_CONTROL_DEV_TELEM1', '''First telemetry port''')
+SERIAL_CONTROL_DEV_TELEM2 = 1 # Second telemetry port
+enums['SERIAL_CONTROL_DEV'][1] = EnumEntry('SERIAL_CONTROL_DEV_TELEM2', '''Second telemetry port''')
+SERIAL_CONTROL_DEV_GPS1 = 2 # First GPS port
+enums['SERIAL_CONTROL_DEV'][2] = EnumEntry('SERIAL_CONTROL_DEV_GPS1', '''First GPS port''')
+SERIAL_CONTROL_DEV_GPS2 = 3 # Second GPS port
+enums['SERIAL_CONTROL_DEV'][3] = EnumEntry('SERIAL_CONTROL_DEV_GPS2', '''Second GPS port''')
+SERIAL_CONTROL_DEV_SHELL = 10 # system shell
+enums['SERIAL_CONTROL_DEV'][10] = EnumEntry('SERIAL_CONTROL_DEV_SHELL', '''system shell''')
+SERIAL_CONTROL_DEV_ENUM_END = 11 #
+enums['SERIAL_CONTROL_DEV'][11] = EnumEntry('SERIAL_CONTROL_DEV_ENUM_END', '''''')
+
+# SERIAL_CONTROL_FLAG
+enums['SERIAL_CONTROL_FLAG'] = {}
+SERIAL_CONTROL_FLAG_REPLY = 1 # Set if this is a reply
+enums['SERIAL_CONTROL_FLAG'][1] = EnumEntry('SERIAL_CONTROL_FLAG_REPLY', '''Set if this is a reply''')
+SERIAL_CONTROL_FLAG_RESPOND = 2 # Set if the sender wants the receiver to send a response as another
+ # SERIAL_CONTROL message
+enums['SERIAL_CONTROL_FLAG'][2] = EnumEntry('SERIAL_CONTROL_FLAG_RESPOND', '''Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message''')
+SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 # 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
+enums['SERIAL_CONTROL_FLAG'][4] = EnumEntry('SERIAL_CONTROL_FLAG_EXCLUSIVE', '''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''')
+SERIAL_CONTROL_FLAG_BLOCKING = 8 # Block on writes to the serial port
+enums['SERIAL_CONTROL_FLAG'][8] = EnumEntry('SERIAL_CONTROL_FLAG_BLOCKING', '''Block on writes to the serial port''')
+SERIAL_CONTROL_FLAG_MULTI = 16 # Send multiple replies until port is drained
+enums['SERIAL_CONTROL_FLAG'][16] = EnumEntry('SERIAL_CONTROL_FLAG_MULTI', '''Send multiple replies until port is drained''')
+SERIAL_CONTROL_FLAG_ENUM_END = 17 #
+enums['SERIAL_CONTROL_FLAG'][17] = EnumEntry('SERIAL_CONTROL_FLAG_ENUM_END', '''''')
+
+# MAV_DISTANCE_SENSOR
+enums['MAV_DISTANCE_SENSOR'] = {}
+MAV_DISTANCE_SENSOR_LASER = 0 # Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+enums['MAV_DISTANCE_SENSOR'][0] = EnumEntry('MAV_DISTANCE_SENSOR_LASER', '''Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units''')
+MAV_DISTANCE_SENSOR_ULTRASOUND = 1 # Ultrasound rangefinder, e.g. MaxBotix units
+enums['MAV_DISTANCE_SENSOR'][1] = EnumEntry('MAV_DISTANCE_SENSOR_ULTRASOUND', '''Ultrasound rangefinder, e.g. MaxBotix units''')
+MAV_DISTANCE_SENSOR_INFRARED = 2 # Infrared rangefinder, e.g. Sharp units
+enums['MAV_DISTANCE_SENSOR'][2] = EnumEntry('MAV_DISTANCE_SENSOR_INFRARED', '''Infrared rangefinder, e.g. Sharp units''')
+MAV_DISTANCE_SENSOR_ENUM_END = 3 #
+enums['MAV_DISTANCE_SENSOR'][3] = EnumEntry('MAV_DISTANCE_SENSOR_ENUM_END', '''''')
+
+# MAV_SENSOR_ORIENTATION
+enums['MAV_SENSOR_ORIENTATION'] = {}
+MAV_SENSOR_ROTATION_NONE = 0 # Roll: 0, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][0] = EnumEntry('MAV_SENSOR_ROTATION_NONE', '''Roll: 0, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_YAW_45 = 1 # Roll: 0, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][1] = EnumEntry('MAV_SENSOR_ROTATION_YAW_45', '''Roll: 0, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_YAW_90 = 2 # Roll: 0, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][2] = EnumEntry('MAV_SENSOR_ROTATION_YAW_90', '''Roll: 0, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_YAW_135 = 3 # Roll: 0, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][3] = EnumEntry('MAV_SENSOR_ROTATION_YAW_135', '''Roll: 0, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_YAW_180 = 4 # Roll: 0, Pitch: 0, Yaw: 180
+enums['MAV_SENSOR_ORIENTATION'][4] = EnumEntry('MAV_SENSOR_ROTATION_YAW_180', '''Roll: 0, Pitch: 0, Yaw: 180''')
+MAV_SENSOR_ROTATION_YAW_225 = 5 # Roll: 0, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][5] = EnumEntry('MAV_SENSOR_ROTATION_YAW_225', '''Roll: 0, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_YAW_270 = 6 # Roll: 0, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][6] = EnumEntry('MAV_SENSOR_ROTATION_YAW_270', '''Roll: 0, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_YAW_315 = 7 # Roll: 0, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][7] = EnumEntry('MAV_SENSOR_ROTATION_YAW_315', '''Roll: 0, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_180 = 8 # Roll: 180, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][8] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180', '''Roll: 180, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 # Roll: 180, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][9] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_45', '''Roll: 180, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 # Roll: 180, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][10] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_90', '''Roll: 180, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 # Roll: 180, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][11] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_135', '''Roll: 180, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_180 = 12 # Roll: 0, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][12] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180', '''Roll: 0, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 # Roll: 180, Pitch: 0, Yaw: 225
+enums['MAV_SENSOR_ORIENTATION'][13] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_225', '''Roll: 180, Pitch: 0, Yaw: 225''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 # Roll: 180, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][14] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_270', '''Roll: 180, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 # Roll: 180, Pitch: 0, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][15] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_YAW_315', '''Roll: 180, Pitch: 0, Yaw: 315''')
+MAV_SENSOR_ROTATION_ROLL_90 = 16 # Roll: 90, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][16] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90', '''Roll: 90, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 # Roll: 90, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][17] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_45', '''Roll: 90, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 # Roll: 90, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][18] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_90', '''Roll: 90, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 # Roll: 90, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][19] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_135', '''Roll: 90, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_ROLL_270 = 20 # Roll: 270, Pitch: 0, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][20] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270', '''Roll: 270, Pitch: 0, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 # Roll: 270, Pitch: 0, Yaw: 45
+enums['MAV_SENSOR_ORIENTATION'][21] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_45', '''Roll: 270, Pitch: 0, Yaw: 45''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 # Roll: 270, Pitch: 0, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][22] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_90', '''Roll: 270, Pitch: 0, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 # Roll: 270, Pitch: 0, Yaw: 135
+enums['MAV_SENSOR_ORIENTATION'][23] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_YAW_135', '''Roll: 270, Pitch: 0, Yaw: 135''')
+MAV_SENSOR_ROTATION_PITCH_90 = 24 # Roll: 0, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][24] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_90', '''Roll: 0, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_270 = 25 # Roll: 0, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][25] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_270', '''Roll: 0, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 # Roll: 0, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][26] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_90', '''Roll: 0, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 # Roll: 0, Pitch: 180, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][27] = EnumEntry('MAV_SENSOR_ROTATION_PITCH_180_YAW_270', '''Roll: 0, Pitch: 180, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 # Roll: 90, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][28] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_90', '''Roll: 90, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 # Roll: 180, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][29] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_90', '''Roll: 180, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 # Roll: 270, Pitch: 90, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][30] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_90', '''Roll: 270, Pitch: 90, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 # Roll: 90, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][31] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180', '''Roll: 90, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 # Roll: 270, Pitch: 180, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][32] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_180', '''Roll: 270, Pitch: 180, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 # Roll: 90, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][33] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_270', '''Roll: 90, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 # Roll: 180, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][34] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_180_PITCH_270', '''Roll: 180, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 # Roll: 270, Pitch: 270, Yaw: 0
+enums['MAV_SENSOR_ORIENTATION'][35] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_270_PITCH_270', '''Roll: 270, Pitch: 270, Yaw: 0''')
+MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 # Roll: 90, Pitch: 180, Yaw: 90
+enums['MAV_SENSOR_ORIENTATION'][36] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90', '''Roll: 90, Pitch: 180, Yaw: 90''')
+MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 # Roll: 90, Pitch: 0, Yaw: 270
+enums['MAV_SENSOR_ORIENTATION'][37] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_90_YAW_270', '''Roll: 90, Pitch: 0, Yaw: 270''')
+MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315 = 38 # Roll: 315, Pitch: 315, Yaw: 315
+enums['MAV_SENSOR_ORIENTATION'][38] = EnumEntry('MAV_SENSOR_ROTATION_ROLL_315_PITCH_315_YAW_315', '''Roll: 315, Pitch: 315, Yaw: 315''')
+MAV_SENSOR_ORIENTATION_ENUM_END = 39 #
+enums['MAV_SENSOR_ORIENTATION'][39] = EnumEntry('MAV_SENSOR_ORIENTATION_ENUM_END', '''''')
+
+# MAV_PROTOCOL_CAPABILITY
+enums['MAV_PROTOCOL_CAPABILITY'] = {}
+MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 # Autopilot supports MISSION float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][1] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT', '''Autopilot supports MISSION float message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 # Autopilot supports the new param float message type.
+enums['MAV_PROTOCOL_CAPABILITY'][2] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT', '''Autopilot supports the new param float message type.''')
+MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 # Autopilot supports MISSION_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][4] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MISSION_INT', '''Autopilot supports MISSION_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 # Autopilot supports COMMAND_INT scaled integer message type.
+enums['MAV_PROTOCOL_CAPABILITY'][8] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMMAND_INT', '''Autopilot supports COMMAND_INT scaled integer message type.''')
+MAV_PROTOCOL_CAPABILITY_PARAM_UNION = 16 # Autopilot supports the new param union message type.
+enums['MAV_PROTOCOL_CAPABILITY'][16] = EnumEntry('MAV_PROTOCOL_CAPABILITY_PARAM_UNION', '''Autopilot supports the new param union message type.''')
+MAV_PROTOCOL_CAPABILITY_FTP = 32 # Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+enums['MAV_PROTOCOL_CAPABILITY'][32] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FTP', '''Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.''')
+MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 # Autopilot supports commanding attitude offboard.
+enums['MAV_PROTOCOL_CAPABILITY'][64] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET', '''Autopilot supports commanding attitude offboard.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 # Autopilot supports commanding position and velocity targets in local
+ # NED frame.
+enums['MAV_PROTOCOL_CAPABILITY'][128] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED', '''Autopilot supports commanding position and velocity targets in local NED frame.''')
+MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 # Autopilot supports commanding position and velocity targets in global
+ # scaled integers.
+enums['MAV_PROTOCOL_CAPABILITY'][256] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT', '''Autopilot supports commanding position and velocity targets in global scaled integers.''')
+MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 # Autopilot supports terrain protocol / data handling.
+enums['MAV_PROTOCOL_CAPABILITY'][512] = EnumEntry('MAV_PROTOCOL_CAPABILITY_TERRAIN', '''Autopilot supports terrain protocol / data handling.''')
+MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 # Autopilot supports direct actuator control.
+enums['MAV_PROTOCOL_CAPABILITY'][1024] = EnumEntry('MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET', '''Autopilot supports direct actuator control.''')
+MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 # Autopilot supports the flight termination command.
+enums['MAV_PROTOCOL_CAPABILITY'][2048] = EnumEntry('MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION', '''Autopilot supports the flight termination command.''')
+MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 # Autopilot supports onboard compass calibration.
+enums['MAV_PROTOCOL_CAPABILITY'][4096] = EnumEntry('MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION', '''Autopilot supports onboard compass calibration.''')
+MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 # Autopilot supports mavlink version 2.
+enums['MAV_PROTOCOL_CAPABILITY'][8192] = EnumEntry('MAV_PROTOCOL_CAPABILITY_MAVLINK2', '''Autopilot supports mavlink version 2.''')
+MAV_PROTOCOL_CAPABILITY_ENUM_END = 8193 #
+enums['MAV_PROTOCOL_CAPABILITY'][8193] = EnumEntry('MAV_PROTOCOL_CAPABILITY_ENUM_END', '''''')
+
+# MAV_ESTIMATOR_TYPE
+enums['MAV_ESTIMATOR_TYPE'] = {}
+MAV_ESTIMATOR_TYPE_NAIVE = 1 # This is a naive estimator without any real covariance feedback.
+enums['MAV_ESTIMATOR_TYPE'][1] = EnumEntry('MAV_ESTIMATOR_TYPE_NAIVE', '''This is a naive estimator without any real covariance feedback.''')
+MAV_ESTIMATOR_TYPE_VISION = 2 # Computer vision based estimate. Might be up to scale.
+enums['MAV_ESTIMATOR_TYPE'][2] = EnumEntry('MAV_ESTIMATOR_TYPE_VISION', '''Computer vision based estimate. Might be up to scale.''')
+MAV_ESTIMATOR_TYPE_VIO = 3 # Visual-inertial estimate.
+enums['MAV_ESTIMATOR_TYPE'][3] = EnumEntry('MAV_ESTIMATOR_TYPE_VIO', '''Visual-inertial estimate.''')
+MAV_ESTIMATOR_TYPE_GPS = 4 # Plain GPS estimate.
+enums['MAV_ESTIMATOR_TYPE'][4] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS', '''Plain GPS estimate.''')
+MAV_ESTIMATOR_TYPE_GPS_INS = 5 # Estimator integrating GPS and inertial sensing.
+enums['MAV_ESTIMATOR_TYPE'][5] = EnumEntry('MAV_ESTIMATOR_TYPE_GPS_INS', '''Estimator integrating GPS and inertial sensing.''')
+MAV_ESTIMATOR_TYPE_ENUM_END = 6 #
+enums['MAV_ESTIMATOR_TYPE'][6] = EnumEntry('MAV_ESTIMATOR_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_TYPE
+enums['MAV_BATTERY_TYPE'] = {}
+MAV_BATTERY_TYPE_UNKNOWN = 0 # Not specified.
+enums['MAV_BATTERY_TYPE'][0] = EnumEntry('MAV_BATTERY_TYPE_UNKNOWN', '''Not specified.''')
+MAV_BATTERY_TYPE_LIPO = 1 # Lithium polymer battery
+enums['MAV_BATTERY_TYPE'][1] = EnumEntry('MAV_BATTERY_TYPE_LIPO', '''Lithium polymer battery''')
+MAV_BATTERY_TYPE_LIFE = 2 # Lithium-iron-phosphate battery
+enums['MAV_BATTERY_TYPE'][2] = EnumEntry('MAV_BATTERY_TYPE_LIFE', '''Lithium-iron-phosphate battery''')
+MAV_BATTERY_TYPE_LION = 3 # Lithium-ION battery
+enums['MAV_BATTERY_TYPE'][3] = EnumEntry('MAV_BATTERY_TYPE_LION', '''Lithium-ION battery''')
+MAV_BATTERY_TYPE_NIMH = 4 # Nickel metal hydride battery
+enums['MAV_BATTERY_TYPE'][4] = EnumEntry('MAV_BATTERY_TYPE_NIMH', '''Nickel metal hydride battery''')
+MAV_BATTERY_TYPE_ENUM_END = 5 #
+enums['MAV_BATTERY_TYPE'][5] = EnumEntry('MAV_BATTERY_TYPE_ENUM_END', '''''')
+
+# MAV_BATTERY_FUNCTION
+enums['MAV_BATTERY_FUNCTION'] = {}
+MAV_BATTERY_FUNCTION_UNKNOWN = 0 # Battery function is unknown
+enums['MAV_BATTERY_FUNCTION'][0] = EnumEntry('MAV_BATTERY_FUNCTION_UNKNOWN', '''Battery function is unknown''')
+MAV_BATTERY_FUNCTION_ALL = 1 # Battery supports all flight systems
+enums['MAV_BATTERY_FUNCTION'][1] = EnumEntry('MAV_BATTERY_FUNCTION_ALL', '''Battery supports all flight systems''')
+MAV_BATTERY_FUNCTION_PROPULSION = 2 # Battery for the propulsion system
+enums['MAV_BATTERY_FUNCTION'][2] = EnumEntry('MAV_BATTERY_FUNCTION_PROPULSION', '''Battery for the propulsion system''')
+MAV_BATTERY_FUNCTION_AVIONICS = 3 # Avionics battery
+enums['MAV_BATTERY_FUNCTION'][3] = EnumEntry('MAV_BATTERY_FUNCTION_AVIONICS', '''Avionics battery''')
+MAV_BATTERY_TYPE_PAYLOAD = 4 # Payload battery
+enums['MAV_BATTERY_FUNCTION'][4] = EnumEntry('MAV_BATTERY_TYPE_PAYLOAD', '''Payload battery''')
+MAV_BATTERY_FUNCTION_ENUM_END = 5 #
+enums['MAV_BATTERY_FUNCTION'][5] = EnumEntry('MAV_BATTERY_FUNCTION_ENUM_END', '''''')
+
+# MAV_VTOL_STATE
+enums['MAV_VTOL_STATE'] = {}
+MAV_VTOL_STATE_UNDEFINED = 0 # MAV is not configured as VTOL
+enums['MAV_VTOL_STATE'][0] = EnumEntry('MAV_VTOL_STATE_UNDEFINED', '''MAV is not configured as VTOL''')
+MAV_VTOL_STATE_TRANSITION_TO_FW = 1 # VTOL is in transition from multicopter to fixed-wing
+enums['MAV_VTOL_STATE'][1] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_FW', '''VTOL is in transition from multicopter to fixed-wing''')
+MAV_VTOL_STATE_TRANSITION_TO_MC = 2 # VTOL is in transition from fixed-wing to multicopter
+enums['MAV_VTOL_STATE'][2] = EnumEntry('MAV_VTOL_STATE_TRANSITION_TO_MC', '''VTOL is in transition from fixed-wing to multicopter''')
+MAV_VTOL_STATE_MC = 3 # VTOL is in multicopter state
+enums['MAV_VTOL_STATE'][3] = EnumEntry('MAV_VTOL_STATE_MC', '''VTOL is in multicopter state''')
+MAV_VTOL_STATE_FW = 4 # VTOL is in fixed-wing state
+enums['MAV_VTOL_STATE'][4] = EnumEntry('MAV_VTOL_STATE_FW', '''VTOL is in fixed-wing state''')
+MAV_VTOL_STATE_ENUM_END = 5 #
+enums['MAV_VTOL_STATE'][5] = EnumEntry('MAV_VTOL_STATE_ENUM_END', '''''')
+
+# MAV_LANDED_STATE
+enums['MAV_LANDED_STATE'] = {}
+MAV_LANDED_STATE_UNDEFINED = 0 # MAV landed state is unknown
+enums['MAV_LANDED_STATE'][0] = EnumEntry('MAV_LANDED_STATE_UNDEFINED', '''MAV landed state is unknown''')
+MAV_LANDED_STATE_ON_GROUND = 1 # MAV is landed (on ground)
+enums['MAV_LANDED_STATE'][1] = EnumEntry('MAV_LANDED_STATE_ON_GROUND', '''MAV is landed (on ground)''')
+MAV_LANDED_STATE_IN_AIR = 2 # MAV is in air
+enums['MAV_LANDED_STATE'][2] = EnumEntry('MAV_LANDED_STATE_IN_AIR', '''MAV is in air''')
+MAV_LANDED_STATE_ENUM_END = 3 #
+enums['MAV_LANDED_STATE'][3] = EnumEntry('MAV_LANDED_STATE_ENUM_END', '''''')
+
+# ADSB_ALTITUDE_TYPE
+enums['ADSB_ALTITUDE_TYPE'] = {}
+ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 # Altitude reported from a Baro source using QNH reference
+enums['ADSB_ALTITUDE_TYPE'][0] = EnumEntry('ADSB_ALTITUDE_TYPE_PRESSURE_QNH', '''Altitude reported from a Baro source using QNH reference''')
+ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 # Altitude reported from a GNSS source
+enums['ADSB_ALTITUDE_TYPE'][1] = EnumEntry('ADSB_ALTITUDE_TYPE_GEOMETRIC', '''Altitude reported from a GNSS source''')
+ADSB_ALTITUDE_TYPE_ENUM_END = 2 #
+enums['ADSB_ALTITUDE_TYPE'][2] = EnumEntry('ADSB_ALTITUDE_TYPE_ENUM_END', '''''')
+
+# ADSB_EMITTER_TYPE
+enums['ADSB_EMITTER_TYPE'] = {}
+ADSB_EMITTER_TYPE_NO_INFO = 0 #
+enums['ADSB_EMITTER_TYPE'][0] = EnumEntry('ADSB_EMITTER_TYPE_NO_INFO', '''''')
+ADSB_EMITTER_TYPE_LIGHT = 1 #
+enums['ADSB_EMITTER_TYPE'][1] = EnumEntry('ADSB_EMITTER_TYPE_LIGHT', '''''')
+ADSB_EMITTER_TYPE_SMALL = 2 #
+enums['ADSB_EMITTER_TYPE'][2] = EnumEntry('ADSB_EMITTER_TYPE_SMALL', '''''')
+ADSB_EMITTER_TYPE_LARGE = 3 #
+enums['ADSB_EMITTER_TYPE'][3] = EnumEntry('ADSB_EMITTER_TYPE_LARGE', '''''')
+ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 #
+enums['ADSB_EMITTER_TYPE'][4] = EnumEntry('ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE', '''''')
+ADSB_EMITTER_TYPE_HEAVY = 5 #
+enums['ADSB_EMITTER_TYPE'][5] = EnumEntry('ADSB_EMITTER_TYPE_HEAVY', '''''')
+ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 #
+enums['ADSB_EMITTER_TYPE'][6] = EnumEntry('ADSB_EMITTER_TYPE_HIGHLY_MANUV', '''''')
+ADSB_EMITTER_TYPE_ROTOCRAFT = 7 #
+enums['ADSB_EMITTER_TYPE'][7] = EnumEntry('ADSB_EMITTER_TYPE_ROTOCRAFT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED = 8 #
+enums['ADSB_EMITTER_TYPE'][8] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED', '''''')
+ADSB_EMITTER_TYPE_GLIDER = 9 #
+enums['ADSB_EMITTER_TYPE'][9] = EnumEntry('ADSB_EMITTER_TYPE_GLIDER', '''''')
+ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 #
+enums['ADSB_EMITTER_TYPE'][10] = EnumEntry('ADSB_EMITTER_TYPE_LIGHTER_AIR', '''''')
+ADSB_EMITTER_TYPE_PARACHUTE = 11 #
+enums['ADSB_EMITTER_TYPE'][11] = EnumEntry('ADSB_EMITTER_TYPE_PARACHUTE', '''''')
+ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 #
+enums['ADSB_EMITTER_TYPE'][12] = EnumEntry('ADSB_EMITTER_TYPE_ULTRA_LIGHT', '''''')
+ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 #
+enums['ADSB_EMITTER_TYPE'][13] = EnumEntry('ADSB_EMITTER_TYPE_UNASSIGNED2', '''''')
+ADSB_EMITTER_TYPE_UAV = 14 #
+enums['ADSB_EMITTER_TYPE'][14] = EnumEntry('ADSB_EMITTER_TYPE_UAV', '''''')
+ADSB_EMITTER_TYPE_SPACE = 15 #
+enums['ADSB_EMITTER_TYPE'][15] = EnumEntry('ADSB_EMITTER_TYPE_SPACE', '''''')
+ADSB_EMITTER_TYPE_UNASSGINED3 = 16 #
+enums['ADSB_EMITTER_TYPE'][16] = EnumEntry('ADSB_EMITTER_TYPE_UNASSGINED3', '''''')
+ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 #
+enums['ADSB_EMITTER_TYPE'][17] = EnumEntry('ADSB_EMITTER_TYPE_EMERGENCY_SURFACE', '''''')
+ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 #
+enums['ADSB_EMITTER_TYPE'][18] = EnumEntry('ADSB_EMITTER_TYPE_SERVICE_SURFACE', '''''')
+ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 #
+enums['ADSB_EMITTER_TYPE'][19] = EnumEntry('ADSB_EMITTER_TYPE_POINT_OBSTACLE', '''''')
+ADSB_EMITTER_TYPE_ENUM_END = 20 #
+enums['ADSB_EMITTER_TYPE'][20] = EnumEntry('ADSB_EMITTER_TYPE_ENUM_END', '''''')
+
+# ADSB_FLAGS
+enums['ADSB_FLAGS'] = {}
+ADSB_FLAGS_VALID_COORDS = 1 #
+enums['ADSB_FLAGS'][1] = EnumEntry('ADSB_FLAGS_VALID_COORDS', '''''')
+ADSB_FLAGS_VALID_ALTITUDE = 2 #
+enums['ADSB_FLAGS'][2] = EnumEntry('ADSB_FLAGS_VALID_ALTITUDE', '''''')
+ADSB_FLAGS_VALID_HEADING = 4 #
+enums['ADSB_FLAGS'][4] = EnumEntry('ADSB_FLAGS_VALID_HEADING', '''''')
+ADSB_FLAGS_VALID_VELOCITY = 8 #
+enums['ADSB_FLAGS'][8] = EnumEntry('ADSB_FLAGS_VALID_VELOCITY', '''''')
+ADSB_FLAGS_VALID_CALLSIGN = 16 #
+enums['ADSB_FLAGS'][16] = EnumEntry('ADSB_FLAGS_VALID_CALLSIGN', '''''')
+ADSB_FLAGS_VALID_SQUAWK = 32 #
+enums['ADSB_FLAGS'][32] = EnumEntry('ADSB_FLAGS_VALID_SQUAWK', '''''')
+ADSB_FLAGS_SIMULATED = 64 #
+enums['ADSB_FLAGS'][64] = EnumEntry('ADSB_FLAGS_SIMULATED', '''''')
+ADSB_FLAGS_ENUM_END = 65 #
+enums['ADSB_FLAGS'][65] = EnumEntry('ADSB_FLAGS_ENUM_END', '''''')
+
+# MAV_DO_REPOSITION_FLAGS
+enums['MAV_DO_REPOSITION_FLAGS'] = {}
+MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 # The aircraft should immediately transition into guided. This should
+ # not be set for follow me applications
+enums['MAV_DO_REPOSITION_FLAGS'][1] = EnumEntry('MAV_DO_REPOSITION_FLAGS_CHANGE_MODE', '''The aircraft should immediately transition into guided. This should not be set for follow me applications''')
+MAV_DO_REPOSITION_FLAGS_ENUM_END = 2 #
+enums['MAV_DO_REPOSITION_FLAGS'][2] = EnumEntry('MAV_DO_REPOSITION_FLAGS_ENUM_END', '''''')
+
+# ESTIMATOR_STATUS_FLAGS
+enums['ESTIMATOR_STATUS_FLAGS'] = {}
+ESTIMATOR_ATTITUDE = 1 # True if the attitude estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][1] = EnumEntry('ESTIMATOR_ATTITUDE', '''True if the attitude estimate is good''')
+ESTIMATOR_VELOCITY_HORIZ = 2 # True if the horizontal velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][2] = EnumEntry('ESTIMATOR_VELOCITY_HORIZ', '''True if the horizontal velocity estimate is good''')
+ESTIMATOR_VELOCITY_VERT = 4 # True if the vertical velocity estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][4] = EnumEntry('ESTIMATOR_VELOCITY_VERT', '''True if the vertical velocity estimate is good''')
+ESTIMATOR_POS_HORIZ_REL = 8 # True if the horizontal position (relative) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][8] = EnumEntry('ESTIMATOR_POS_HORIZ_REL', '''True if the horizontal position (relative) estimate is good''')
+ESTIMATOR_POS_HORIZ_ABS = 16 # True if the horizontal position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][16] = EnumEntry('ESTIMATOR_POS_HORIZ_ABS', '''True if the horizontal position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_ABS = 32 # True if the vertical position (absolute) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][32] = EnumEntry('ESTIMATOR_POS_VERT_ABS', '''True if the vertical position (absolute) estimate is good''')
+ESTIMATOR_POS_VERT_AGL = 64 # True if the vertical position (above ground) estimate is good
+enums['ESTIMATOR_STATUS_FLAGS'][64] = EnumEntry('ESTIMATOR_POS_VERT_AGL', '''True if the vertical position (above ground) estimate is good''')
+ESTIMATOR_CONST_POS_MODE = 128 # True if the EKF is in a constant position mode and is not using
+ # external measurements (eg GPS or optical
+ # flow)
+enums['ESTIMATOR_STATUS_FLAGS'][128] = EnumEntry('ESTIMATOR_CONST_POS_MODE', '''True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)''')
+ESTIMATOR_PRED_POS_HORIZ_REL = 256 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (relative) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][256] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_REL', '''True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate''')
+ESTIMATOR_PRED_POS_HORIZ_ABS = 512 # True if the EKF has sufficient data to enter a mode that will provide
+ # a (absolute) position estimate
+enums['ESTIMATOR_STATUS_FLAGS'][512] = EnumEntry('ESTIMATOR_PRED_POS_HORIZ_ABS', '''True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate''')
+ESTIMATOR_GPS_GLITCH = 1024 # True if the EKF has detected a GPS glitch
+enums['ESTIMATOR_STATUS_FLAGS'][1024] = EnumEntry('ESTIMATOR_GPS_GLITCH', '''True if the EKF has detected a GPS glitch''')
+ESTIMATOR_STATUS_FLAGS_ENUM_END = 1025 #
+enums['ESTIMATOR_STATUS_FLAGS'][1025] = EnumEntry('ESTIMATOR_STATUS_FLAGS_ENUM_END', '''''')
+
+# MOTOR_TEST_THROTTLE_TYPE
+enums['MOTOR_TEST_THROTTLE_TYPE'] = {}
+MOTOR_TEST_THROTTLE_PERCENT = 0 # throttle as a percentage from 0 ~ 100
+enums['MOTOR_TEST_THROTTLE_TYPE'][0] = EnumEntry('MOTOR_TEST_THROTTLE_PERCENT', '''throttle as a percentage from 0 ~ 100''')
+MOTOR_TEST_THROTTLE_PWM = 1 # throttle as an absolute PWM value (normally in range of 1000~2000)
+enums['MOTOR_TEST_THROTTLE_TYPE'][1] = EnumEntry('MOTOR_TEST_THROTTLE_PWM', '''throttle as an absolute PWM value (normally in range of 1000~2000)''')
+MOTOR_TEST_THROTTLE_PILOT = 2 # throttle pass-through from pilot's transmitter
+enums['MOTOR_TEST_THROTTLE_TYPE'][2] = EnumEntry('MOTOR_TEST_THROTTLE_PILOT', '''throttle pass-through from pilot's transmitter''')
+MOTOR_TEST_THROTTLE_TYPE_ENUM_END = 3 #
+enums['MOTOR_TEST_THROTTLE_TYPE'][3] = EnumEntry('MOTOR_TEST_THROTTLE_TYPE_ENUM_END', '''''')
+
+# GPS_INPUT_IGNORE_FLAGS
+enums['GPS_INPUT_IGNORE_FLAGS'] = {}
+GPS_INPUT_IGNORE_FLAG_ALT = 1 # ignore altitude field
+enums['GPS_INPUT_IGNORE_FLAGS'][1] = EnumEntry('GPS_INPUT_IGNORE_FLAG_ALT', '''ignore altitude field''')
+GPS_INPUT_IGNORE_FLAG_HDOP = 2 # ignore hdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][2] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HDOP', '''ignore hdop field''')
+GPS_INPUT_IGNORE_FLAG_VDOP = 4 # ignore vdop field
+enums['GPS_INPUT_IGNORE_FLAGS'][4] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VDOP', '''ignore vdop field''')
+GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 # ignore horizontal velocity field (vn and ve)
+enums['GPS_INPUT_IGNORE_FLAGS'][8] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_HORIZ', '''ignore horizontal velocity field (vn and ve)''')
+GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 # ignore vertical velocity field (vd)
+enums['GPS_INPUT_IGNORE_FLAGS'][16] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VEL_VERT', '''ignore vertical velocity field (vd)''')
+GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 # ignore speed accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][32] = EnumEntry('GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY', '''ignore speed accuracy field''')
+GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 # ignore horizontal accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][64] = EnumEntry('GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY', '''ignore horizontal accuracy field''')
+GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 # ignore vertical accuracy field
+enums['GPS_INPUT_IGNORE_FLAGS'][128] = EnumEntry('GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY', '''ignore vertical accuracy field''')
+GPS_INPUT_IGNORE_FLAGS_ENUM_END = 129 #
+enums['GPS_INPUT_IGNORE_FLAGS'][129] = EnumEntry('GPS_INPUT_IGNORE_FLAGS_ENUM_END', '''''')
+
+# MAV_COLLISION_ACTION
+enums['MAV_COLLISION_ACTION'] = {}
+MAV_COLLISION_ACTION_NONE = 0 # Ignore any potential collisions
+enums['MAV_COLLISION_ACTION'][0] = EnumEntry('MAV_COLLISION_ACTION_NONE', '''Ignore any potential collisions''')
+MAV_COLLISION_ACTION_REPORT = 1 # Report potential collision
+enums['MAV_COLLISION_ACTION'][1] = EnumEntry('MAV_COLLISION_ACTION_REPORT', '''Report potential collision''')
+MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][2] = EnumEntry('MAV_COLLISION_ACTION_ASCEND_OR_DESCEND', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 # Ascend or Descend to avoid thread
+enums['MAV_COLLISION_ACTION'][3] = EnumEntry('MAV_COLLISION_ACTION_MOVE_HORIZONTALLY', '''Ascend or Descend to avoid thread''')
+MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 # Aircraft to move perpendicular to the collision's velocity vector
+enums['MAV_COLLISION_ACTION'][4] = EnumEntry('MAV_COLLISION_ACTION_MOVE_PERPENDICULAR', '''Aircraft to move perpendicular to the collision's velocity vector''')
+MAV_COLLISION_ACTION_RTL = 5 # Aircraft to fly directly back to its launch point
+enums['MAV_COLLISION_ACTION'][5] = EnumEntry('MAV_COLLISION_ACTION_RTL', '''Aircraft to fly directly back to its launch point''')
+MAV_COLLISION_ACTION_HOVER = 6 # Aircraft to stop in place
+enums['MAV_COLLISION_ACTION'][6] = EnumEntry('MAV_COLLISION_ACTION_HOVER', '''Aircraft to stop in place''')
+MAV_COLLISION_ACTION_ENUM_END = 7 #
+enums['MAV_COLLISION_ACTION'][7] = EnumEntry('MAV_COLLISION_ACTION_ENUM_END', '''''')
+
+# MAV_COLLISION_THREAT_LEVEL
+enums['MAV_COLLISION_THREAT_LEVEL'] = {}
+MAV_COLLISION_THREAT_LEVEL_NONE = 0 # Not a threat
+enums['MAV_COLLISION_THREAT_LEVEL'][0] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_NONE', '''Not a threat''')
+MAV_COLLISION_THREAT_LEVEL_LOW = 1 # Craft is mildly concerned about this threat
+enums['MAV_COLLISION_THREAT_LEVEL'][1] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_LOW', '''Craft is mildly concerned about this threat''')
+MAV_COLLISION_THREAT_LEVEL_HIGH = 2 # Craft is panicing, and may take actions to avoid threat
+enums['MAV_COLLISION_THREAT_LEVEL'][2] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_HIGH', '''Craft is panicing, and may take actions to avoid threat''')
+MAV_COLLISION_THREAT_LEVEL_ENUM_END = 3 #
+enums['MAV_COLLISION_THREAT_LEVEL'][3] = EnumEntry('MAV_COLLISION_THREAT_LEVEL_ENUM_END', '''''')
+
+# MAV_COLLISION_SRC
+enums['MAV_COLLISION_SRC'] = {}
+MAV_COLLISION_SRC_ADSB = 0 # ID field references ADSB_VEHICLE packets
+enums['MAV_COLLISION_SRC'][0] = EnumEntry('MAV_COLLISION_SRC_ADSB', '''ID field references ADSB_VEHICLE packets''')
+MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 # ID field references MAVLink SRC ID
+enums['MAV_COLLISION_SRC'][1] = EnumEntry('MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT', '''ID field references MAVLink SRC ID''')
+MAV_COLLISION_SRC_ENUM_END = 2 #
+enums['MAV_COLLISION_SRC'][2] = EnumEntry('MAV_COLLISION_SRC_ENUM_END', '''''')
+
+# GPS_FIX_TYPE
+enums['GPS_FIX_TYPE'] = {}
+GPS_FIX_TYPE_NO_GPS = 0 # No GPS connected
+enums['GPS_FIX_TYPE'][0] = EnumEntry('GPS_FIX_TYPE_NO_GPS', '''No GPS connected''')
+GPS_FIX_TYPE_NO_FIX = 1 # No position information, GPS is connected
+enums['GPS_FIX_TYPE'][1] = EnumEntry('GPS_FIX_TYPE_NO_FIX', '''No position information, GPS is connected''')
+GPS_FIX_TYPE_2D_FIX = 2 # 2D position
+enums['GPS_FIX_TYPE'][2] = EnumEntry('GPS_FIX_TYPE_2D_FIX', '''2D position''')
+GPS_FIX_TYPE_3D_FIX = 3 # 3D position
+enums['GPS_FIX_TYPE'][3] = EnumEntry('GPS_FIX_TYPE_3D_FIX', '''3D position''')
+GPS_FIX_TYPE_DGPS = 4 # DGPS/SBAS aided 3D position
+enums['GPS_FIX_TYPE'][4] = EnumEntry('GPS_FIX_TYPE_DGPS', '''DGPS/SBAS aided 3D position''')
+GPS_FIX_TYPE_RTK_FLOAT = 5 # RTK float, 3D position
+enums['GPS_FIX_TYPE'][5] = EnumEntry('GPS_FIX_TYPE_RTK_FLOAT', '''RTK float, 3D position''')
+GPS_FIX_TYPE_RTK_FIXED = 6 # RTK Fixed, 3D position
+enums['GPS_FIX_TYPE'][6] = EnumEntry('GPS_FIX_TYPE_RTK_FIXED', '''RTK Fixed, 3D position''')
+GPS_FIX_TYPE_STATIC = 7 # Static fixed, typically used for base stations
+enums['GPS_FIX_TYPE'][7] = EnumEntry('GPS_FIX_TYPE_STATIC', '''Static fixed, typically used for base stations''')
+GPS_FIX_TYPE_ENUM_END = 8 #
+enums['GPS_FIX_TYPE'][8] = EnumEntry('GPS_FIX_TYPE_ENUM_END', '''''')
+
+# message IDs
+MAVLINK_MSG_ID_BAD_DATA = -1
+MAVLINK_MSG_ID_NAV_FILTER_BIAS = 220
+MAVLINK_MSG_ID_RADIO_CALIBRATION = 221
+MAVLINK_MSG_ID_UALBERTA_SYS_STATUS = 222
+MAVLINK_MSG_ID_HEARTBEAT = 0
+MAVLINK_MSG_ID_SYS_STATUS = 1
+MAVLINK_MSG_ID_SYSTEM_TIME = 2
+MAVLINK_MSG_ID_PING = 4
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL = 5
+MAVLINK_MSG_ID_CHANGE_OPERATOR_CONTROL_ACK = 6
+MAVLINK_MSG_ID_AUTH_KEY = 7
+MAVLINK_MSG_ID_SET_MODE = 11
+MAVLINK_MSG_ID_PARAM_REQUEST_READ = 20
+MAVLINK_MSG_ID_PARAM_REQUEST_LIST = 21
+MAVLINK_MSG_ID_PARAM_VALUE = 22
+MAVLINK_MSG_ID_PARAM_SET = 23
+MAVLINK_MSG_ID_GPS_RAW_INT = 24
+MAVLINK_MSG_ID_GPS_STATUS = 25
+MAVLINK_MSG_ID_SCALED_IMU = 26
+MAVLINK_MSG_ID_RAW_IMU = 27
+MAVLINK_MSG_ID_RAW_PRESSURE = 28
+MAVLINK_MSG_ID_SCALED_PRESSURE = 29
+MAVLINK_MSG_ID_ATTITUDE = 30
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION = 31
+MAVLINK_MSG_ID_LOCAL_POSITION_NED = 32
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT = 33
+MAVLINK_MSG_ID_RC_CHANNELS_SCALED = 34
+MAVLINK_MSG_ID_RC_CHANNELS_RAW = 35
+MAVLINK_MSG_ID_SERVO_OUTPUT_RAW = 36
+MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST = 37
+MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST = 38
+MAVLINK_MSG_ID_MISSION_ITEM = 39
+MAVLINK_MSG_ID_MISSION_REQUEST = 40
+MAVLINK_MSG_ID_MISSION_SET_CURRENT = 41
+MAVLINK_MSG_ID_MISSION_CURRENT = 42
+MAVLINK_MSG_ID_MISSION_REQUEST_LIST = 43
+MAVLINK_MSG_ID_MISSION_COUNT = 44
+MAVLINK_MSG_ID_MISSION_CLEAR_ALL = 45
+MAVLINK_MSG_ID_MISSION_ITEM_REACHED = 46
+MAVLINK_MSG_ID_MISSION_ACK = 47
+MAVLINK_MSG_ID_SET_GPS_GLOBAL_ORIGIN = 48
+MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN = 49
+MAVLINK_MSG_ID_PARAM_MAP_RC = 50
+MAVLINK_MSG_ID_MISSION_REQUEST_INT = 51
+MAVLINK_MSG_ID_SAFETY_SET_ALLOWED_AREA = 54
+MAVLINK_MSG_ID_SAFETY_ALLOWED_AREA = 55
+MAVLINK_MSG_ID_ATTITUDE_QUATERNION_COV = 61
+MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT = 62
+MAVLINK_MSG_ID_GLOBAL_POSITION_INT_COV = 63
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_COV = 64
+MAVLINK_MSG_ID_RC_CHANNELS = 65
+MAVLINK_MSG_ID_REQUEST_DATA_STREAM = 66
+MAVLINK_MSG_ID_DATA_STREAM = 67
+MAVLINK_MSG_ID_MANUAL_CONTROL = 69
+MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE = 70
+MAVLINK_MSG_ID_MISSION_ITEM_INT = 73
+MAVLINK_MSG_ID_VFR_HUD = 74
+MAVLINK_MSG_ID_COMMAND_INT = 75
+MAVLINK_MSG_ID_COMMAND_LONG = 76
+MAVLINK_MSG_ID_COMMAND_ACK = 77
+MAVLINK_MSG_ID_MANUAL_SETPOINT = 81
+MAVLINK_MSG_ID_SET_ATTITUDE_TARGET = 82
+MAVLINK_MSG_ID_ATTITUDE_TARGET = 83
+MAVLINK_MSG_ID_SET_POSITION_TARGET_LOCAL_NED = 84
+MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED = 85
+MAVLINK_MSG_ID_SET_POSITION_TARGET_GLOBAL_INT = 86
+MAVLINK_MSG_ID_POSITION_TARGET_GLOBAL_INT = 87
+MAVLINK_MSG_ID_LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET = 89
+MAVLINK_MSG_ID_HIL_STATE = 90
+MAVLINK_MSG_ID_HIL_CONTROLS = 91
+MAVLINK_MSG_ID_HIL_RC_INPUTS_RAW = 92
+MAVLINK_MSG_ID_HIL_ACTUATOR_CONTROLS = 93
+MAVLINK_MSG_ID_OPTICAL_FLOW = 100
+MAVLINK_MSG_ID_GLOBAL_VISION_POSITION_ESTIMATE = 101
+MAVLINK_MSG_ID_VISION_POSITION_ESTIMATE = 102
+MAVLINK_MSG_ID_VISION_SPEED_ESTIMATE = 103
+MAVLINK_MSG_ID_VICON_POSITION_ESTIMATE = 104
+MAVLINK_MSG_ID_HIGHRES_IMU = 105
+MAVLINK_MSG_ID_OPTICAL_FLOW_RAD = 106
+MAVLINK_MSG_ID_HIL_SENSOR = 107
+MAVLINK_MSG_ID_SIM_STATE = 108
+MAVLINK_MSG_ID_RADIO_STATUS = 109
+MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL = 110
+MAVLINK_MSG_ID_TIMESYNC = 111
+MAVLINK_MSG_ID_CAMERA_TRIGGER = 112
+MAVLINK_MSG_ID_HIL_GPS = 113
+MAVLINK_MSG_ID_HIL_OPTICAL_FLOW = 114
+MAVLINK_MSG_ID_HIL_STATE_QUATERNION = 115
+MAVLINK_MSG_ID_SCALED_IMU2 = 116
+MAVLINK_MSG_ID_LOG_REQUEST_LIST = 117
+MAVLINK_MSG_ID_LOG_ENTRY = 118
+MAVLINK_MSG_ID_LOG_REQUEST_DATA = 119
+MAVLINK_MSG_ID_LOG_DATA = 120
+MAVLINK_MSG_ID_LOG_ERASE = 121
+MAVLINK_MSG_ID_LOG_REQUEST_END = 122
+MAVLINK_MSG_ID_GPS_INJECT_DATA = 123
+MAVLINK_MSG_ID_GPS2_RAW = 124
+MAVLINK_MSG_ID_POWER_STATUS = 125
+MAVLINK_MSG_ID_SERIAL_CONTROL = 126
+MAVLINK_MSG_ID_GPS_RTK = 127
+MAVLINK_MSG_ID_GPS2_RTK = 128
+MAVLINK_MSG_ID_SCALED_IMU3 = 129
+MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE = 130
+MAVLINK_MSG_ID_ENCAPSULATED_DATA = 131
+MAVLINK_MSG_ID_DISTANCE_SENSOR = 132
+MAVLINK_MSG_ID_TERRAIN_REQUEST = 133
+MAVLINK_MSG_ID_TERRAIN_DATA = 134
+MAVLINK_MSG_ID_TERRAIN_CHECK = 135
+MAVLINK_MSG_ID_TERRAIN_REPORT = 136
+MAVLINK_MSG_ID_SCALED_PRESSURE2 = 137
+MAVLINK_MSG_ID_ATT_POS_MOCAP = 138
+MAVLINK_MSG_ID_SET_ACTUATOR_CONTROL_TARGET = 139
+MAVLINK_MSG_ID_ACTUATOR_CONTROL_TARGET = 140
+MAVLINK_MSG_ID_ALTITUDE = 141
+MAVLINK_MSG_ID_RESOURCE_REQUEST = 142
+MAVLINK_MSG_ID_SCALED_PRESSURE3 = 143
+MAVLINK_MSG_ID_FOLLOW_TARGET = 144
+MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE = 146
+MAVLINK_MSG_ID_BATTERY_STATUS = 147
+MAVLINK_MSG_ID_AUTOPILOT_VERSION = 148
+MAVLINK_MSG_ID_LANDING_TARGET = 149
+MAVLINK_MSG_ID_ESTIMATOR_STATUS = 230
+MAVLINK_MSG_ID_WIND_COV = 231
+MAVLINK_MSG_ID_GPS_INPUT = 232
+MAVLINK_MSG_ID_GPS_RTCM_DATA = 233
+MAVLINK_MSG_ID_VIBRATION = 241
+MAVLINK_MSG_ID_HOME_POSITION = 242
+MAVLINK_MSG_ID_SET_HOME_POSITION = 243
+MAVLINK_MSG_ID_MESSAGE_INTERVAL = 244
+MAVLINK_MSG_ID_EXTENDED_SYS_STATE = 245
+MAVLINK_MSG_ID_ADSB_VEHICLE = 246
+MAVLINK_MSG_ID_COLLISION = 247
+MAVLINK_MSG_ID_V2_EXTENSION = 248
+MAVLINK_MSG_ID_MEMORY_VECT = 249
+MAVLINK_MSG_ID_DEBUG_VECT = 250
+MAVLINK_MSG_ID_NAMED_VALUE_FLOAT = 251
+MAVLINK_MSG_ID_NAMED_VALUE_INT = 252
+MAVLINK_MSG_ID_STATUSTEXT = 253
+MAVLINK_MSG_ID_DEBUG = 254
+MAVLINK_MSG_ID_SETUP_SIGNING = 256
+MAVLINK_MSG_ID_BUTTON_CHANGE = 257
+MAVLINK_MSG_ID_PLAY_TUNE = 258
+
+class MAVLink_nav_filter_bias_message(MAVLink_message):
+ '''
+ Accelerometer and Gyro biases from the navigation filter
+ '''
+ id = MAVLINK_MSG_ID_NAV_FILTER_BIAS
+ name = 'NAV_FILTER_BIAS'
+ fieldnames = ['usec', 'accel_0', 'accel_1', 'accel_2', 'gyro_0', 'gyro_1', 'gyro_2']
+ ordered_fieldnames = [ 'usec', 'accel_0', 'accel_1', 'accel_2', 'gyro_0', 'gyro_1', 'gyro_2' ]
+ format = '
+ 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
+ http://qgroundcontrol.org/parameter_interface for a full
+ documentation of QGroundControl and IMU code.
+ '''
+ id = MAVLINK_MSG_ID_PARAM_REQUEST_READ
+ name = 'PARAM_REQUEST_READ'
+ fieldnames = ['target_system', 'target_component', 'param_id', 'param_index']
+ ordered_fieldnames = [ 'param_index', 'target_system', 'target_component', 'param_id' ]
+ format = '= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack('
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return MAVLink_param_request_read_message(target_system, target_component, param_id, param_index)
+
+ def param_request_read_send(self, target_system, target_component, param_id, param_index, force_mavlink1=False):
+ '''
+ Request to read the onboard parameter with the param_id string id.
+ Onboard parameters are stored as key[const char*] ->
+ 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
+ http://qgroundcontrol.org/parameter_interface for a
+ full documentation of QGroundControl and IMU code.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_index : Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) (int16_t)
+
+ '''
+ return self.send(self.param_request_read_encode(target_system, target_component, param_id, param_index), force_mavlink1=force_mavlink1)
+
+ def param_request_list_encode(self, target_system, target_component):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_param_request_list_message(target_system, target_component)
+
+ def param_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request all parameters of this component. After this request, all
+ parameters are emitted.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.param_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def param_value_encode(self, param_id, param_value, param_type, param_count, param_index):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return MAVLink_param_value_message(param_id, param_value, param_type, param_count, param_index)
+
+ def param_value_send(self, param_id, param_value, param_type, param_count, param_index, force_mavlink1=False):
+ '''
+ 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.
+
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+ param_count : Total number of onboard parameters (uint16_t)
+ param_index : Index of this onboard parameter (uint16_t)
+
+ '''
+ return self.send(self.param_value_encode(param_id, param_value, param_type, param_count, param_index), force_mavlink1=force_mavlink1)
+
+ def param_set_encode(self, target_system, target_component, param_id, param_value, param_type):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return MAVLink_param_set_message(target_system, target_component, param_id, param_value, param_type)
+
+ def param_set_send(self, target_system, target_component, param_id, param_value, param_type, force_mavlink1=False):
+ '''
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default
+ on system reboot. Send the ACTION
+ MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM
+ contents to EEPROM. IMPORTANT: The receiving component
+ should acknowledge the new parameter value by sending
+ a param_value message to all communication partners.
+ This will also ensure that multiple GCS all have an
+ up-to-date list of all parameters. If the sending GCS
+ did not receive a PARAM_VALUE message within its
+ timeout time, it should re-send the PARAM_SET message.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ param_value : Onboard parameter value (float)
+ param_type : Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types. (uint8_t)
+
+ '''
+ return self.send(self.param_set_encode(target_system, target_component, param_id, param_value, param_type), force_mavlink1=force_mavlink1)
+
+ def gps_raw_int_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_gps_raw_int_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible)
+
+ def gps_raw_int_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, force_mavlink1=False):
+ '''
+ 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 for the global position
+ estimate. Coordinate frame is right-handed, Z-axis up
+ (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude. (int32_t)
+ eph : GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.gps_raw_int_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_status_encode(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return MAVLink_gps_status_message(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr)
+
+ def gps_status_send(self, satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr, force_mavlink1=False):
+ '''
+ 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
+ for the global position estimate. This message can
+ contain information for up to 20 satellites.
+
+ satellites_visible : Number of satellites visible (uint8_t)
+ satellite_prn : Global satellite ID (uint8_t)
+ satellite_used : 0: Satellite not used, 1: used for localization (uint8_t)
+ satellite_elevation : Elevation (0: right on top of receiver, 90: on the horizon) of satellite (uint8_t)
+ satellite_azimuth : Direction of satellite, 0: 0 deg, 255: 360 deg. (uint8_t)
+ satellite_snr : Signal to noise ratio of satellite (uint8_t)
+
+ '''
+ return self.send(self.gps_status_encode(satellites_visible, satellite_prn, satellite_used, satellite_elevation, satellite_azimuth, satellite_snr), force_mavlink1=force_mavlink1)
+
+ def scaled_imu_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def raw_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for the usual 9DOF sensor setup. This message
+ should always contain the true raw values without any
+ scaling to allow data capture and system debugging.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ xacc : X acceleration (raw) (int16_t)
+ yacc : Y acceleration (raw) (int16_t)
+ zacc : Z acceleration (raw) (int16_t)
+ xgyro : Angular speed around X axis (raw) (int16_t)
+ ygyro : Angular speed around Y axis (raw) (int16_t)
+ zgyro : Angular speed around Z axis (raw) (int16_t)
+ xmag : X Magnetic field (raw) (int16_t)
+ ymag : Y Magnetic field (raw) (int16_t)
+ zmag : Z Magnetic field (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def raw_pressure_encode(self, time_usec, press_abs, press_diff1, press_diff2, temperature):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return MAVLink_raw_pressure_message(time_usec, press_abs, press_diff1, press_diff2, temperature)
+
+ def raw_pressure_send(self, time_usec, press_abs, press_diff1, press_diff2, temperature, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ press_abs : Absolute pressure (raw) (int16_t)
+ press_diff1 : Differential pressure 1 (raw, 0 if nonexistant) (int16_t)
+ press_diff2 : Differential pressure 2 (raw, 0 if nonexistant) (int16_t)
+ temperature : Raw Temperature measurement (raw) (int16_t)
+
+ '''
+ return self.send(self.raw_pressure_encode(time_usec, press_abs, press_diff1, press_diff2, temperature), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ The pressure readings for the typical setup of one absolute and
+ differential pressure sensor. The units are as
+ specified in each field.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def attitude_encode(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_message(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_send(self, time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front,
+ Y-right).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ roll : Roll angle (rad, -pi..+pi) (float)
+ pitch : Pitch angle (rad, -pi..+pi) (float)
+ yaw : Yaw angle (rad, -pi..+pi) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_encode(time_boot_ms, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_encode(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return MAVLink_attitude_quaternion_message(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed)
+
+ def attitude_quaternion_send(self, time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q1 : Quaternion component 1, w (1 in null-rotation) (float)
+ q2 : Quaternion component 2, x (0 in null-rotation) (float)
+ q3 : Quaternion component 3, y (0 in null-rotation) (float)
+ q4 : Quaternion component 4, z (0 in null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+
+ '''
+ return self.send(self.attitude_quaternion_encode(time_boot_ms, q1, q2, q3, q4, rollspeed, pitchspeed, yawspeed), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_encode(self, time_boot_ms, x, y, z, vx, vy, vz):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return MAVLink_local_position_ned_message(time_boot_ms, x, y, z, vx, vy, vz)
+
+ def local_position_ned_send(self, time_boot_ms, x, y, z, vx, vy, vz, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (float)
+ vy : Y Speed (float)
+ vz : Z Speed (float)
+
+ '''
+ return self.send(self.local_position_ned_encode(time_boot_ms, x, y, z, vx, vy, vz), force_mavlink1=force_mavlink1)
+
+ def global_position_int_encode(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return MAVLink_global_position_int_message(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg)
+
+ def global_position_int_send(self, time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude, positive north), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude, positive east), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude, positive down), expressed as m/s * 100 (int16_t)
+ hdg : Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+
+ '''
+ return self.send(self.global_position_int_encode(time_boot_ms, lat, lon, alt, relative_alt, vx, vy, vz, hdg), force_mavlink1=force_mavlink1)
+
+ def rc_channels_scaled_encode(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_scaled_message(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi)
+
+ def rc_channels_scaled_send(self, time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi, force_mavlink1=False):
+ '''
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0,
+ (100%) 10000. Channels that are inactive should be set
+ to UINT16_MAX.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_scaled : RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan2_scaled : RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan3_scaled : RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan4_scaled : RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan5_scaled : RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan6_scaled : RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan7_scaled : RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ chan8_scaled : RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX. (int16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_scaled_encode(time_boot_ms, port, chan1_scaled, chan2_scaled, chan3_scaled, chan4_scaled, chan5_scaled, chan6_scaled, chan7_scaled, chan8_scaled, rssi), force_mavlink1=force_mavlink1)
+
+ def rc_channels_raw_encode(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_raw_message(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi)
+
+ def rc_channels_raw_send(self, time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_raw_encode(time_boot_ms, port, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def servo_output_raw_encode(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return MAVLink_servo_output_raw_message(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw)
+
+ def servo_output_raw_send(self, time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw, force_mavlink1=False):
+ '''
+ 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%.
+
+ time_usec : Timestamp (microseconds since system boot) (uint32_t)
+ port : Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos. (uint8_t)
+ servo1_raw : Servo output 1 value, in microseconds (uint16_t)
+ servo2_raw : Servo output 2 value, in microseconds (uint16_t)
+ servo3_raw : Servo output 3 value, in microseconds (uint16_t)
+ servo4_raw : Servo output 4 value, in microseconds (uint16_t)
+ servo5_raw : Servo output 5 value, in microseconds (uint16_t)
+ servo6_raw : Servo output 6 value, in microseconds (uint16_t)
+ servo7_raw : Servo output 7 value, in microseconds (uint16_t)
+ servo8_raw : Servo output 8 value, in microseconds (uint16_t)
+ servo9_raw : Servo output 9 value, in microseconds (uint16_t)
+ servo10_raw : Servo output 10 value, in microseconds (uint16_t)
+ servo11_raw : Servo output 11 value, in microseconds (uint16_t)
+ servo12_raw : Servo output 12 value, in microseconds (uint16_t)
+ servo13_raw : Servo output 13 value, in microseconds (uint16_t)
+ servo14_raw : Servo output 14 value, in microseconds (uint16_t)
+ servo15_raw : Servo output 15 value, in microseconds (uint16_t)
+ servo16_raw : Servo output 16 value, in microseconds (uint16_t)
+
+ '''
+ return self.send(self.servo_output_raw_encode(time_usec, port, servo1_raw, servo2_raw, servo3_raw, servo4_raw, servo5_raw, servo6_raw, servo7_raw, servo8_raw, servo9_raw, servo10_raw, servo11_raw, servo12_raw, servo13_raw, servo14_raw, servo15_raw, servo16_raw), force_mavlink1=force_mavlink1)
+
+ def mission_request_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return MAVLink_mission_request_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_request_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ Request a partial list of mission items from the system/component.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ If start and end index are the same, just send one
+ waypoint.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default (int16_t)
+ end_index : End index, -1 by default (-1: send list to end). Else a valid index of the list (int16_t)
+
+ '''
+ return self.send(self.mission_request_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_write_partial_list_encode(self, target_system, target_component, start_index, end_index):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return MAVLink_mission_write_partial_list_message(target_system, target_component, start_index, end_index)
+
+ def mission_write_partial_list_send(self, target_system, target_component, start_index, end_index, force_mavlink1=False):
+ '''
+ 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!
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start_index : Start index, 0 by default and smaller / equal to the largest index of the current onboard list. (int16_t)
+ end_index : End index, equal or greater than start index. (int16_t)
+
+ '''
+ return self.send(self.mission_write_partial_list_encode(target_system, target_component, start_index, end_index), force_mavlink1=force_mavlink1)
+
+ def mission_item_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See also
+ http://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position, global: latitude (float)
+ y : PARAM6 / y position: global: longitude (float)
+ z : PARAM7 / z position: global: altitude (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def mission_request_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_message(target_system, target_component, seq)
+
+ def mission_request_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_set_current_encode(self, target_system, target_component, seq):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_set_current_message(target_system, target_component, seq)
+
+ def mission_set_current_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ Set the mission item with sequence number seq as current item. This
+ means that the MAV will continue to this mission item
+ on the shortest path (not following the mission items
+ in-between).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_set_current_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def mission_current_encode(self, seq):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_current_message(seq)
+
+ def mission_current_send(self, seq, force_mavlink1=False):
+ '''
+ Message that announces the sequence number of the current active
+ mission item. The MAV will fly towards this mission
+ item.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_current_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_request_list_encode(self, target_system, target_component):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_request_list_message(target_system, target_component)
+
+ def mission_request_list_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Request the overall list of mission items from the system/component.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_request_list_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_count_encode(self, target_system, target_component, count):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_count_message(target_system, target_component, count)
+
+ def mission_count_send(self, target_system, target_component, count, force_mavlink1=False):
+ '''
+ 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 MISSIONs.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ count : Number of mission items in the sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_count_encode(target_system, target_component, count), force_mavlink1=force_mavlink1)
+
+ def mission_clear_all_encode(self, target_system, target_component):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_mission_clear_all_message(target_system, target_component)
+
+ def mission_clear_all_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Delete all mission items at once.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.mission_clear_all_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def mission_item_reached_encode(self, seq):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_item_reached_message(seq)
+
+ def mission_item_reached_send(self, seq, force_mavlink1=False):
+ '''
+ 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
+ MISSION.
+
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_item_reached_encode(seq), force_mavlink1=force_mavlink1)
+
+ def mission_ack_encode(self, target_system, target_component, type):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_mission_ack_message(target_system, target_component, type)
+
+ def mission_ack_send(self, target_system, target_component, type, force_mavlink1=False):
+ '''
+ Ack message during MISSION handling. The type field states if this
+ message is a positive ack (type=0) or if an error
+ happened (type=non-zero).
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type : See MAV_MISSION_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.mission_ack_encode(target_system, target_component, type), force_mavlink1=force_mavlink1)
+
+ def set_gps_global_origin_encode(self, target_system, latitude, longitude, altitude):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_set_gps_global_origin_message(target_system, latitude, longitude, altitude)
+
+ def set_gps_global_origin_send(self, target_system, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ As local waypoints exist, the global MISSION reference allows to
+ transform between the local coordinate frame and the
+ global (GPS) coordinate frame. This can be necessary
+ when e.g. in- and outdoor settings are connected and
+ the MAV should move from in- to outdoor.
+
+ target_system : System ID (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.set_gps_global_origin_encode(target_system, latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def gps_global_origin_encode(self, latitude, longitude, altitude):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return MAVLink_gps_global_origin_message(latitude, longitude, altitude)
+
+ def gps_global_origin_send(self, latitude, longitude, altitude, force_mavlink1=False):
+ '''
+ Once the MAV sets a new GPS-Local correspondence, this message
+ announces the origin (0,0,0) position
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+
+ '''
+ return self.send(self.gps_global_origin_encode(latitude, longitude, altitude), force_mavlink1=force_mavlink1)
+
+ def param_map_rc_encode(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return MAVLink_param_map_rc_message(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max)
+
+ def param_map_rc_send(self, target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max, force_mavlink1=False):
+ '''
+ Bind a RC channel to a parameter. The parameter should change accoding
+ to the RC channel value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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 (char)
+ 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. (int16_t)
+ parameter_rc_channel_index : Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC. (uint8_t)
+ param_value0 : Initial parameter value (float)
+ scale : Scale, maps the RC range [-1, 1] to a parameter value (float)
+ param_value_min : Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation) (float)
+ param_value_max : Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation) (float)
+
+ '''
+ return self.send(self.param_map_rc_encode(target_system, target_component, param_id, param_index, parameter_rc_channel_index, param_value0, scale, param_value_min, param_value_max), force_mavlink1=force_mavlink1)
+
+ def mission_request_int_encode(self, target_system, target_component, seq):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return MAVLink_mission_request_int_message(target_system, target_component, seq)
+
+ def mission_request_int_send(self, target_system, target_component, seq, force_mavlink1=False):
+ '''
+ 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.
+ http://qgroundcontrol.org/mavlink/waypoint_protocol
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Sequence (uint16_t)
+
+ '''
+ return self.send(self.mission_request_int_encode(target_system, target_component, seq), force_mavlink1=force_mavlink1)
+
+ def safety_set_allowed_area_encode(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_set_allowed_area_message(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_set_allowed_area_send(self, target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ 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/MISSIONs to accept and which to reject.
+ Safety areas are often enforced by national or
+ competition regulations.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_set_allowed_area_encode(target_system, target_component, frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def safety_allowed_area_encode(self, frame, p1x, p1y, p1z, p2x, p2y, p2z):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return MAVLink_safety_allowed_area_message(frame, p1x, p1y, p1z, p2x, p2y, p2z)
+
+ def safety_allowed_area_send(self, frame, p1x, p1y, p1z, p2x, p2y, p2z, force_mavlink1=False):
+ '''
+ Read out the safety zone the MAV currently assumes.
+
+ frame : Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down. (uint8_t)
+ p1x : x position 1 / Latitude 1 (float)
+ p1y : y position 1 / Longitude 1 (float)
+ p1z : z position 1 / Altitude 1 (float)
+ p2x : x position 2 / Latitude 2 (float)
+ p2y : y position 2 / Longitude 2 (float)
+ p2z : z position 2 / Altitude 2 (float)
+
+ '''
+ return self.send(self.safety_allowed_area_encode(frame, p1x, p1y, p1z, p2x, p2y, p2z), force_mavlink1=force_mavlink1)
+
+ def attitude_quaternion_cov_encode(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return MAVLink_attitude_quaternion_cov_message(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance)
+
+ def attitude_quaternion_cov_send(self, time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ q : Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation) (float)
+ rollspeed : Roll angular speed (rad/s) (float)
+ pitchspeed : Pitch angular speed (rad/s) (float)
+ yawspeed : Yaw angular speed (rad/s) (float)
+ covariance : Attitude covariance (float)
+
+ '''
+ return self.send(self.attitude_quaternion_cov_encode(time_boot_ms, q, rollspeed, pitchspeed, yawspeed, covariance), force_mavlink1=force_mavlink1)
+
+ def nav_controller_output_encode(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return MAVLink_nav_controller_output_message(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error)
+
+ def nav_controller_output_send(self, nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error, force_mavlink1=False):
+ '''
+ The state of the fixed wing navigation and position controller.
+
+ nav_roll : Current desired roll in degrees (float)
+ nav_pitch : Current desired pitch in degrees (float)
+ nav_bearing : Current desired heading in degrees (int16_t)
+ target_bearing : Bearing to current MISSION/target in degrees (int16_t)
+ wp_dist : Distance to active MISSION in meters (uint16_t)
+ alt_error : Current altitude error in meters (float)
+ aspd_error : Current airspeed error in meters/second (float)
+ xtrack_error : Current crosstrack error on x-y plane in meters (float)
+
+ '''
+ return self.send(self.nav_controller_output_encode(nav_roll, nav_pitch, nav_bearing, target_bearing, wp_dist, alt_error, aspd_error, xtrack_error), force_mavlink1=force_mavlink1)
+
+ def global_position_int_cov_encode(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_global_position_int_cov_message(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance)
+
+ def global_position_int_cov_send(self, time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters), above MSL (int32_t)
+ relative_alt : Altitude above ground in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s (float)
+ vy : Ground Y Speed (Longitude), expressed as m/s (float)
+ vz : Ground Z Speed (Altitude), expressed as m/s (float)
+ covariance : Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.global_position_int_cov_encode(time_boot_ms, time_utc, estimator_type, lat, lon, alt, relative_alt, vx, vy, vz, covariance), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_cov_encode(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return MAVLink_local_position_ned_cov_message(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance)
+
+ def local_position_ned_cov_send(self, time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp (uint32_t)
+ time_utc : Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver. (uint64_t)
+ estimator_type : Class id of the estimator this estimate originated from. (uint8_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ vx : X Speed (m/s) (float)
+ vy : Y Speed (m/s) (float)
+ vz : Z Speed (m/s) (float)
+ ax : X Acceleration (m/s^2) (float)
+ ay : Y Acceleration (m/s^2) (float)
+ az : Z Acceleration (m/s^2) (float)
+ covariance : Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.) (float)
+
+ '''
+ return self.send(self.local_position_ned_cov_encode(time_boot_ms, time_utc, estimator_type, x, y, z, vx, vy, vz, ax, ay, az, covariance), force_mavlink1=force_mavlink1)
+
+ def rc_channels_encode(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return MAVLink_rc_channels_message(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi)
+
+ def rc_channels_send(self, time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi, force_mavlink1=False):
+ '''
+ The PPM 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ 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. (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan13_raw : RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan14_raw : RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan15_raw : RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan16_raw : RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan17_raw : RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ chan18_raw : RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused. (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown. (uint8_t)
+
+ '''
+ return self.send(self.rc_channels_encode(time_boot_ms, chancount, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, chan13_raw, chan14_raw, chan15_raw, chan16_raw, chan17_raw, chan18_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def request_data_stream_encode(self, target_system, target_component, req_stream_id, req_message_rate, start_stop):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return MAVLink_request_data_stream_message(target_system, target_component, req_stream_id, req_message_rate, start_stop)
+
+ def request_data_stream_send(self, target_system, target_component, req_stream_id, req_message_rate, start_stop, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+
+ target_system : The target requested to send the message stream. (uint8_t)
+ target_component : The target requested to send the message stream. (uint8_t)
+ req_stream_id : The ID of the requested data stream (uint8_t)
+ req_message_rate : The requested message rate (uint16_t)
+ start_stop : 1 to start sending, 0 to stop sending. (uint8_t)
+
+ '''
+ return self.send(self.request_data_stream_encode(target_system, target_component, req_stream_id, req_message_rate, start_stop), force_mavlink1=force_mavlink1)
+
+ def data_stream_encode(self, stream_id, message_rate, on_off):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return MAVLink_data_stream_message(stream_id, message_rate, on_off)
+
+ def data_stream_send(self, stream_id, message_rate, on_off, force_mavlink1=False):
+ '''
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+
+ stream_id : The ID of the requested data stream (uint8_t)
+ message_rate : The message rate (uint16_t)
+ on_off : 1 stream is enabled, 0 stream is stopped. (uint8_t)
+
+ '''
+ return self.send(self.data_stream_encode(stream_id, message_rate, on_off), force_mavlink1=force_mavlink1)
+
+ def manual_control_encode(self, target, x, y, z, r, buttons):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return MAVLink_manual_control_message(target, x, y, z, r, buttons)
+
+ def manual_control_send(self, target, x, y, z, r, buttons, force_mavlink1=False):
+ '''
+ 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 an buttons are also transmit as boolean
+ values of their
+
+ target : The system to be controlled. (uint8_t)
+ x : 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. (int16_t)
+ y : 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. (int16_t)
+ z : 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. (int16_t)
+ r : 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. (int16_t)
+ buttons : A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1. (uint16_t)
+
+ '''
+ return self.send(self.manual_control_encode(target, x, y, z, r, buttons), force_mavlink1=force_mavlink1)
+
+ def rc_channels_override_encode(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return MAVLink_rc_channels_override_message(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw)
+
+ def rc_channels_override_send(self, target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, force_mavlink1=False):
+ '''
+ The RAW values of the RC channels sent to the MAV to override info
+ received from the RC radio. A value of UINT16_MAX
+ means no change to that channel. A value of 0 means
+ control of that channel should be released back to the
+ RC radio. The standard PPM modulation is as follows:
+ 1000 microseconds: 0%, 2000 microseconds: 100%.
+ Individual receivers/transmitters might violate this
+ specification.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ chan1_raw : RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field. (uint16_t)
+
+ '''
+ return self.send(self.rc_channels_override_encode(target_system, target_component, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw), force_mavlink1=force_mavlink1)
+
+ def mission_item_int_encode(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_mission_item_int_message(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def mission_item_int_send(self, target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ 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). See alsohttp
+ ://qgroundcontrol.org/mavlink/waypoint_protocol.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ seq : Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4). (uint16_t)
+ frame : The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.mission_item_int_encode(target_system, target_component, seq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vfr_hud_encode(self, airspeed, groundspeed, heading, throttle, alt, climb):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return MAVLink_vfr_hud_message(airspeed, groundspeed, heading, throttle, alt, climb)
+
+ def vfr_hud_send(self, airspeed, groundspeed, heading, throttle, alt, climb, force_mavlink1=False):
+ '''
+ Metrics typically displayed on a HUD for fixed wing aircraft
+
+ airspeed : Current airspeed in m/s (float)
+ groundspeed : Current ground speed in m/s (float)
+ heading : Current heading in degrees, in compass units (0..360, 0=north) (int16_t)
+ throttle : Current throttle setting in integer percent, 0 to 100 (uint16_t)
+ alt : Current altitude (MSL), in meters (float)
+ climb : Current climb rate in meters/second (float)
+
+ '''
+ return self.send(self.vfr_hud_encode(airspeed, groundspeed, heading, throttle, alt, climb), force_mavlink1=force_mavlink1)
+
+ def command_int_encode(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return MAVLink_command_int_message(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z)
+
+ def command_int_send(self, target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z, force_mavlink1=False):
+ '''
+ Message encoding a command with parameters as scaled integers. Scaling
+ depends on the actual command value.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ frame : The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h (uint8_t)
+ command : The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs (uint16_t)
+ current : false:0, true:1 (uint8_t)
+ autocontinue : autocontinue to next wp (uint8_t)
+ param1 : PARAM1, see MAV_CMD enum (float)
+ param2 : PARAM2, see MAV_CMD enum (float)
+ param3 : PARAM3, see MAV_CMD enum (float)
+ param4 : PARAM4, see MAV_CMD enum (float)
+ x : PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7 (int32_t)
+ y : PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7 (int32_t)
+ z : PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame. (float)
+
+ '''
+ return self.send(self.command_int_encode(target_system, target_component, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z), force_mavlink1=force_mavlink1)
+
+ def command_long_encode(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return MAVLink_command_long_message(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7)
+
+ def command_long_send(self, target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7, force_mavlink1=False):
+ '''
+ Send a command with up to seven parameters to the MAV
+
+ target_system : System which should execute the command (uint8_t)
+ target_component : Component which should execute the command, 0 for all components (uint8_t)
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ confirmation : 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command) (uint8_t)
+ param1 : Parameter 1, as defined by MAV_CMD enum. (float)
+ param2 : Parameter 2, as defined by MAV_CMD enum. (float)
+ param3 : Parameter 3, as defined by MAV_CMD enum. (float)
+ param4 : Parameter 4, as defined by MAV_CMD enum. (float)
+ param5 : Parameter 5, as defined by MAV_CMD enum. (float)
+ param6 : Parameter 6, as defined by MAV_CMD enum. (float)
+ param7 : Parameter 7, as defined by MAV_CMD enum. (float)
+
+ '''
+ return self.send(self.command_long_encode(target_system, target_component, command, confirmation, param1, param2, param3, param4, param5, param6, param7), force_mavlink1=force_mavlink1)
+
+ def command_ack_encode(self, command, result):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return MAVLink_command_ack_message(command, result)
+
+ def command_ack_send(self, command, result, force_mavlink1=False):
+ '''
+ Report status of a command. Includes feedback wether the command was
+ executed.
+
+ command : Command ID, as defined by MAV_CMD enum. (uint16_t)
+ result : See MAV_RESULT enum (uint8_t)
+
+ '''
+ return self.send(self.command_ack_encode(command, result), force_mavlink1=force_mavlink1)
+
+ def manual_setpoint_encode(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return MAVLink_manual_setpoint_message(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch)
+
+ def manual_setpoint_send(self, time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch, force_mavlink1=False):
+ '''
+ Setpoint in roll, pitch, yaw and thrust from the operator
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ roll : Desired roll rate in radians per second (float)
+ pitch : Desired pitch rate in radians per second (float)
+ yaw : Desired yaw rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (float)
+ mode_switch : Flight mode switch position, 0.. 255 (uint8_t)
+ manual_override_switch : Override mode switch position, 0.. 255 (uint8_t)
+
+ '''
+ return self.send(self.manual_setpoint_encode(time_boot_ms, roll, pitch, yaw, thrust, mode_switch, manual_override_switch), force_mavlink1=force_mavlink1)
+
+ def set_attitude_target_encode(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_set_attitude_target_message(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def set_attitude_target_send(self, time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ Sets a desired vehicle attitude. Used by an external controller to
+ command the vehicle (manual controller or other
+ system).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.set_attitude_target_encode(time_boot_ms, target_system, target_component, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def attitude_target_encode(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return MAVLink_attitude_target_message(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust)
+
+ def attitude_target_send(self, time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ type_mask : Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude (uint8_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ body_roll_rate : Body roll rate in radians per second (float)
+ body_pitch_rate : Body roll rate in radians per second (float)
+ body_yaw_rate : Body roll rate in radians per second (float)
+ thrust : Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust) (float)
+
+ '''
+ return self.send(self.attitude_target_encode(time_boot_ms, type_mask, q, body_roll_rate, body_pitch_rate, body_yaw_rate, thrust), force_mavlink1=force_mavlink1)
+
+ def set_position_target_local_ned_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_local_ned_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_local_ned_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_local_ned_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_local_ned_encode(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_local_ned_message(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_local_ned_send(self, time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds since system boot (uint32_t)
+ coordinate_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 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ x : X Position in NED frame in meters (float)
+ y : Y Position in NED frame in meters (float)
+ z : Z Position in NED frame in meters (note, altitude is negative in NED) (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_local_ned_encode(time_boot_ms, coordinate_frame, type_mask, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def set_position_target_global_int_encode(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_set_position_target_global_int_message(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def set_position_target_global_int_send(self, time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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).
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.set_position_target_global_int_encode(time_boot_ms, target_system, target_component, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def position_target_global_int_encode(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return MAVLink_position_target_global_int_message(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)
+
+ def position_target_global_int_send(self, time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp in milliseconds 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. (uint32_t)
+ coordinate_frame : Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 (uint8_t)
+ type_mask : Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate (uint16_t)
+ lat_int : X Position in WGS84 frame in 1e7 * meters (int32_t)
+ lon_int : Y Position in WGS84 frame in 1e7 * meters (int32_t)
+ alt : Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT (float)
+ vx : X velocity in NED frame in meter / s (float)
+ vy : Y velocity in NED frame in meter / s (float)
+ vz : Z velocity in NED frame in meter / s (float)
+ afx : X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afy : Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ afz : Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N (float)
+ yaw : yaw setpoint in rad (float)
+ yaw_rate : yaw rate setpoint in rad/s (float)
+
+ '''
+ return self.send(self.position_target_global_int_encode(time_boot_ms, coordinate_frame, type_mask, lat_int, lon_int, alt, vx, vy, vz, afx, afy, afz, yaw, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def local_position_ned_system_global_offset_encode(self, time_boot_ms, x, y, z, roll, pitch, yaw):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return MAVLink_local_position_ned_system_global_offset_message(time_boot_ms, x, y, z, roll, pitch, yaw)
+
+ def local_position_ned_system_global_offset_send(self, time_boot_ms, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+ 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)
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ x : X Position (float)
+ y : Y Position (float)
+ z : Z Position (float)
+ roll : Roll (float)
+ pitch : Pitch (float)
+ yaw : Yaw (float)
+
+ '''
+ return self.send(self.local_position_ned_system_global_offset_encode(time_boot_ms, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def hil_state_encode(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_message(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc)
+
+ def hil_state_send(self, time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ DEPRECATED PACKET! Suffers from missing airspeed fields and
+ singularities due to Euler angles. Please use
+ HIL_STATE_QUATERNION instead. Sent from simulation to
+ autopilot. This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll : Roll angle (rad) (float)
+ pitch : Pitch angle (rad) (float)
+ yaw : Yaw angle (rad) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_encode(time_usec, roll, pitch, yaw, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def hil_controls_encode(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return MAVLink_hil_controls_message(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode)
+
+ def hil_controls_send(self, time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ roll_ailerons : Control output -1 .. 1 (float)
+ pitch_elevator : Control output -1 .. 1 (float)
+ yaw_rudder : Control output -1 .. 1 (float)
+ throttle : Throttle 0 .. 1 (float)
+ aux1 : Aux 1, -1 .. 1 (float)
+ aux2 : Aux 2, -1 .. 1 (float)
+ aux3 : Aux 3, -1 .. 1 (float)
+ aux4 : Aux 4, -1 .. 1 (float)
+ mode : System mode (MAV_MODE) (uint8_t)
+ nav_mode : Navigation mode (MAV_NAV_MODE) (uint8_t)
+
+ '''
+ return self.send(self.hil_controls_encode(time_usec, roll_ailerons, pitch_elevator, yaw_rudder, throttle, aux1, aux2, aux3, aux4, mode, nav_mode), force_mavlink1=force_mavlink1)
+
+ def hil_rc_inputs_raw_encode(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return MAVLink_hil_rc_inputs_raw_message(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi)
+
+ def hil_rc_inputs_raw_send(self, time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ chan1_raw : RC channel 1 value, in microseconds (uint16_t)
+ chan2_raw : RC channel 2 value, in microseconds (uint16_t)
+ chan3_raw : RC channel 3 value, in microseconds (uint16_t)
+ chan4_raw : RC channel 4 value, in microseconds (uint16_t)
+ chan5_raw : RC channel 5 value, in microseconds (uint16_t)
+ chan6_raw : RC channel 6 value, in microseconds (uint16_t)
+ chan7_raw : RC channel 7 value, in microseconds (uint16_t)
+ chan8_raw : RC channel 8 value, in microseconds (uint16_t)
+ chan9_raw : RC channel 9 value, in microseconds (uint16_t)
+ chan10_raw : RC channel 10 value, in microseconds (uint16_t)
+ chan11_raw : RC channel 11 value, in microseconds (uint16_t)
+ chan12_raw : RC channel 12 value, in microseconds (uint16_t)
+ rssi : Receive signal strength indicator, 0: 0%, 255: 100% (uint8_t)
+
+ '''
+ return self.send(self.hil_rc_inputs_raw_encode(time_usec, chan1_raw, chan2_raw, chan3_raw, chan4_raw, chan5_raw, chan6_raw, chan7_raw, chan8_raw, chan9_raw, chan10_raw, chan11_raw, chan12_raw, rssi), force_mavlink1=force_mavlink1)
+
+ def hil_actuator_controls_encode(self, time_usec, controls, mode, flags):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return MAVLink_hil_actuator_controls_message(time_usec, controls, mode, flags)
+
+ def hil_actuator_controls_send(self, time_usec, controls, mode, flags, force_mavlink1=False):
+ '''
+ Sent from autopilot to simulation. Hardware in the loop control
+ outputs (replacement for HIL_CONTROLS)
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ controls : Control outputs -1 .. 1. Channel assignment depends on the simulated hardware. (float)
+ mode : System mode (MAV_MODE), includes arming state. (uint8_t)
+ flags : Flags as bitfield, reserved for future use. (uint64_t)
+
+ '''
+ return self.send(self.hil_actuator_controls_encode(time_usec, controls, mode, flags), force_mavlink1=force_mavlink1)
+
+ def optical_flow_encode(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return MAVLink_optical_flow_message(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance)
+
+ def optical_flow_send(self, time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance, force_mavlink1=False):
+ '''
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+
+ time_usec : Timestamp (UNIX) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ flow_x : Flow in pixels * 10 in x-sensor direction (dezi-pixels) (int16_t)
+ flow_y : Flow in pixels * 10 in y-sensor direction (dezi-pixels) (int16_t)
+ flow_comp_m_x : Flow in meters in x-sensor direction, angular-speed compensated (float)
+ flow_comp_m_y : Flow in meters in y-sensor direction, angular-speed compensated (float)
+ quality : Optical flow quality / confidence. 0: bad, 255: maximum quality (uint8_t)
+ ground_distance : Ground distance in meters. Positive value: distance known. Negative value: Unknown distance (float)
+
+ '''
+ return self.send(self.optical_flow_encode(time_usec, sensor_id, flow_x, flow_y, flow_comp_m_x, flow_comp_m_y, quality, ground_distance), force_mavlink1=force_mavlink1)
+
+ def global_vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_global_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def global_vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.global_vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vision_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vision_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vision_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def vision_speed_estimate_encode(self, usec, x, y, z):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return MAVLink_vision_speed_estimate_message(usec, x, y, z)
+
+ def vision_speed_estimate_send(self, usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X speed (float)
+ y : Global Y speed (float)
+ z : Global Z speed (float)
+
+ '''
+ return self.send(self.vision_speed_estimate_encode(usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def vicon_position_estimate_encode(self, usec, x, y, z, roll, pitch, yaw):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return MAVLink_vicon_position_estimate_message(usec, x, y, z, roll, pitch, yaw)
+
+ def vicon_position_estimate_send(self, usec, x, y, z, roll, pitch, yaw, force_mavlink1=False):
+ '''
+
+
+ usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ x : Global X position (float)
+ y : Global Y position (float)
+ z : Global Z position (float)
+ roll : Roll angle in rad (float)
+ pitch : Pitch angle in rad (float)
+ yaw : Yaw angle in rad (float)
+
+ '''
+ return self.send(self.vicon_position_estimate_encode(usec, x, y, z, roll, pitch, yaw), force_mavlink1=force_mavlink1)
+
+ def highres_imu_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return MAVLink_highres_imu_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def highres_imu_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis (rad / sec) (float)
+ ygyro : Angular speed around Y axis (rad / sec) (float)
+ zgyro : Angular speed around Z axis (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature (uint16_t)
+
+ '''
+ return self.send(self.highres_imu_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def optical_flow_rad_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_optical_flow_rad_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def optical_flow_rad_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse
+ sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.optical_flow_rad_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_sensor_encode(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return MAVLink_hil_sensor_message(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated)
+
+ def hil_sensor_send(self, time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated, force_mavlink1=False):
+ '''
+ The IMU readings in SI units in NED body frame
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ xacc : X acceleration (m/s^2) (float)
+ yacc : Y acceleration (m/s^2) (float)
+ zacc : Z acceleration (m/s^2) (float)
+ xgyro : Angular speed around X axis in body frame (rad / sec) (float)
+ ygyro : Angular speed around Y axis in body frame (rad / sec) (float)
+ zgyro : Angular speed around Z axis in body frame (rad / sec) (float)
+ xmag : X Magnetic field (Gauss) (float)
+ ymag : Y Magnetic field (Gauss) (float)
+ zmag : Z Magnetic field (Gauss) (float)
+ abs_pressure : Absolute pressure in millibar (float)
+ diff_pressure : Differential pressure (airspeed) in millibar (float)
+ pressure_alt : Altitude calculated from pressure (float)
+ temperature : Temperature in degrees celsius (float)
+ fields_updated : Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim. (uint32_t)
+
+ '''
+ return self.send(self.hil_sensor_encode(time_usec, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, abs_pressure, diff_pressure, pressure_alt, temperature, fields_updated), force_mavlink1=force_mavlink1)
+
+ def sim_state_encode(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return MAVLink_sim_state_message(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd)
+
+ def sim_state_send(self, q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd, force_mavlink1=False):
+ '''
+ Status of simulation environment, if used
+
+ q1 : True attitude quaternion component 1, w (1 in null-rotation) (float)
+ q2 : True attitude quaternion component 2, x (0 in null-rotation) (float)
+ q3 : True attitude quaternion component 3, y (0 in null-rotation) (float)
+ q4 : True attitude quaternion component 4, z (0 in null-rotation) (float)
+ roll : Attitude roll expressed as Euler angles, not recommended except for human-readable outputs (float)
+ pitch : Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs (float)
+ yaw : Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs (float)
+ xacc : X acceleration m/s/s (float)
+ yacc : Y acceleration m/s/s (float)
+ zacc : Z acceleration m/s/s (float)
+ xgyro : Angular speed around X axis rad/s (float)
+ ygyro : Angular speed around Y axis rad/s (float)
+ zgyro : Angular speed around Z axis rad/s (float)
+ lat : Latitude in degrees (float)
+ lon : Longitude in degrees (float)
+ alt : Altitude in meters (float)
+ std_dev_horz : Horizontal position standard deviation (float)
+ std_dev_vert : Vertical position standard deviation (float)
+ vn : True velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : True velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : True velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+
+ '''
+ return self.send(self.sim_state_encode(q1, q2, q3, q4, roll, pitch, yaw, xacc, yacc, zacc, xgyro, ygyro, zgyro, lat, lon, alt, std_dev_horz, std_dev_vert, vn, ve, vd), force_mavlink1=force_mavlink1)
+
+ def radio_status_encode(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return MAVLink_radio_status_message(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed)
+
+ def radio_status_send(self, rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed, force_mavlink1=False):
+ '''
+ Status generated by radio and injected into MAVLink stream.
+
+ rssi : Local signal strength (uint8_t)
+ remrssi : Remote signal strength (uint8_t)
+ txbuf : Remaining free buffer space in percent. (uint8_t)
+ noise : Background noise level (uint8_t)
+ remnoise : Remote background noise level (uint8_t)
+ rxerrors : Receive errors (uint16_t)
+ fixed : Count of error corrected packets (uint16_t)
+
+ '''
+ return self.send(self.radio_status_encode(rssi, remrssi, txbuf, noise, remnoise, rxerrors, fixed), force_mavlink1=force_mavlink1)
+
+ def file_transfer_protocol_encode(self, target_network, target_system, target_component, payload):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_file_transfer_protocol_message(target_network, target_system, target_component, payload)
+
+ def file_transfer_protocol_send(self, target_network, target_system, target_component, payload, force_mavlink1=False):
+ '''
+ File transfer message
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.file_transfer_protocol_encode(target_network, target_system, target_component, payload), force_mavlink1=force_mavlink1)
+
+ def timesync_encode(self, tc1, ts1):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return MAVLink_timesync_message(tc1, ts1)
+
+ def timesync_send(self, tc1, ts1, force_mavlink1=False):
+ '''
+ Time synchronization message.
+
+ tc1 : Time sync timestamp 1 (int64_t)
+ ts1 : Time sync timestamp 2 (int64_t)
+
+ '''
+ return self.send(self.timesync_encode(tc1, ts1), force_mavlink1=force_mavlink1)
+
+ def camera_trigger_encode(self, time_usec, seq):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return MAVLink_camera_trigger_message(time_usec, seq)
+
+ def camera_trigger_send(self, time_usec, seq, force_mavlink1=False):
+ '''
+ Camera-IMU triggering and synchronisation message.
+
+ time_usec : Timestamp for the image frame in microseconds (uint64_t)
+ seq : Image frame sequence (uint32_t)
+
+ '''
+ return self.send(self.camera_trigger_encode(time_usec, seq), force_mavlink1=force_mavlink1)
+
+ def hil_gps_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return MAVLink_hil_gps_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible)
+
+ def hil_gps_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible, force_mavlink1=False):
+ '''
+ The global position, as returned by the Global Positioning System
+ (GPS). This is NOT the global
+ position estimate of the sytem, but rather a RAW
+ sensor value. See message GLOBAL_POSITION for the
+ global position estimate. Coordinate frame is right-
+ handed, Z-axis up (GPS frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ 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. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535 (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: 65535 (uint16_t)
+ vn : GPS velocity in cm/s in NORTH direction in earth-fixed NED frame (int16_t)
+ ve : GPS velocity in cm/s in EAST direction in earth-fixed NED frame (int16_t)
+ vd : GPS velocity in cm/s in DOWN direction in earth-fixed NED frame (int16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535 (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+
+ '''
+ return self.send(self.hil_gps_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, vn, ve, vd, cog, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def hil_optical_flow_encode(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return MAVLink_hil_optical_flow_message(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance)
+
+ def hil_optical_flow_send(self, time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance, force_mavlink1=False):
+ '''
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical
+ mouse sensor)
+
+ time_usec : Timestamp (microseconds, synced to UNIX time or since system boot) (uint64_t)
+ sensor_id : Sensor ID (uint8_t)
+ integration_time_us : Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the. (uint32_t)
+ integrated_x : 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.) (float)
+ integrated_y : 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.) (float)
+ integrated_xgyro : RH rotation around X axis (rad) (float)
+ integrated_ygyro : RH rotation around Y axis (rad) (float)
+ integrated_zgyro : RH rotation around Z axis (rad) (float)
+ temperature : Temperature * 100 in centi-degrees Celsius (int16_t)
+ quality : Optical flow quality / confidence. 0: no valid flow, 255: maximum quality (uint8_t)
+ time_delta_distance_us : Time in microseconds since the distance was sampled. (uint32_t)
+ distance : Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance. (float)
+
+ '''
+ return self.send(self.hil_optical_flow_encode(time_usec, sensor_id, integration_time_us, integrated_x, integrated_y, integrated_xgyro, integrated_ygyro, integrated_zgyro, temperature, quality, time_delta_distance_us, distance), force_mavlink1=force_mavlink1)
+
+ def hil_state_quaternion_encode(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return MAVLink_hil_state_quaternion_message(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc)
+
+ def hil_state_quaternion_send(self, time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc, force_mavlink1=False):
+ '''
+ 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.
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ attitude_quaternion : Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation) (float)
+ rollspeed : Body frame roll / phi angular speed (rad/s) (float)
+ pitchspeed : Body frame pitch / theta angular speed (rad/s) (float)
+ yawspeed : Body frame yaw / psi angular speed (rad/s) (float)
+ lat : Latitude, expressed as * 1E7 (int32_t)
+ lon : Longitude, expressed as * 1E7 (int32_t)
+ alt : Altitude in meters, expressed as * 1000 (millimeters) (int32_t)
+ vx : Ground X Speed (Latitude), expressed as m/s * 100 (int16_t)
+ vy : Ground Y Speed (Longitude), expressed as m/s * 100 (int16_t)
+ vz : Ground Z Speed (Altitude), expressed as m/s * 100 (int16_t)
+ ind_airspeed : Indicated airspeed, expressed as m/s * 100 (uint16_t)
+ true_airspeed : True airspeed, expressed as m/s * 100 (uint16_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+
+ '''
+ return self.send(self.hil_state_quaternion_encode(time_usec, attitude_quaternion, rollspeed, pitchspeed, yawspeed, lat, lon, alt, vx, vy, vz, ind_airspeed, true_airspeed, xacc, yacc, zacc), force_mavlink1=force_mavlink1)
+
+ def scaled_imu2_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu2_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu2_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for secondary 9DOF sensor setup. This message
+ should contain the scaled values to the described
+ units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu2_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def log_request_list_encode(self, target_system, target_component, start, end):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return MAVLink_log_request_list_message(target_system, target_component, start, end)
+
+ def log_request_list_send(self, target_system, target_component, start, end, force_mavlink1=False):
+ '''
+ Request a list of available logs. On some systems calling this may
+ stop on-board logging until LOG_REQUEST_END is called.
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ start : First log id (0 for first available) (uint16_t)
+ end : Last log id (0xffff for last available) (uint16_t)
+
+ '''
+ return self.send(self.log_request_list_encode(target_system, target_component, start, end), force_mavlink1=force_mavlink1)
+
+ def log_entry_encode(self, id, num_logs, last_log_num, time_utc, size):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return MAVLink_log_entry_message(id, num_logs, last_log_num, time_utc, size)
+
+ def log_entry_send(self, id, num_logs, last_log_num, time_utc, size, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_LIST
+
+ id : Log id (uint16_t)
+ num_logs : Total number of logs (uint16_t)
+ last_log_num : High log number (uint16_t)
+ time_utc : UTC timestamp of log in seconds since 1970, or 0 if not available (uint32_t)
+ size : Size of the log (may be approximate) in bytes (uint32_t)
+
+ '''
+ return self.send(self.log_entry_encode(id, num_logs, last_log_num, time_utc, size), force_mavlink1=force_mavlink1)
+
+ def log_request_data_encode(self, target_system, target_component, id, ofs, count):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return MAVLink_log_request_data_message(target_system, target_component, id, ofs, count)
+
+ def log_request_data_send(self, target_system, target_component, id, ofs, count, force_mavlink1=False):
+ '''
+ Request a chunk of a log
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (uint32_t)
+
+ '''
+ return self.send(self.log_request_data_encode(target_system, target_component, id, ofs, count), force_mavlink1=force_mavlink1)
+
+ def log_data_encode(self, id, ofs, count, data):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return MAVLink_log_data_message(id, ofs, count, data)
+
+ def log_data_send(self, id, ofs, count, data, force_mavlink1=False):
+ '''
+ Reply to LOG_REQUEST_DATA
+
+ id : Log id (from LOG_ENTRY reply) (uint16_t)
+ ofs : Offset into the log (uint32_t)
+ count : Number of bytes (zero for end of log) (uint8_t)
+ data : log data (uint8_t)
+
+ '''
+ return self.send(self.log_data_encode(id, ofs, count, data), force_mavlink1=force_mavlink1)
+
+ def log_erase_encode(self, target_system, target_component):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_erase_message(target_system, target_component)
+
+ def log_erase_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Erase all logs
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_erase_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def log_request_end_encode(self, target_system, target_component):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return MAVLink_log_request_end_message(target_system, target_component)
+
+ def log_request_end_send(self, target_system, target_component, force_mavlink1=False):
+ '''
+ Stop log transfer and resume normal logging
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+
+ '''
+ return self.send(self.log_request_end_encode(target_system, target_component), force_mavlink1=force_mavlink1)
+
+ def gps_inject_data_encode(self, target_system, target_component, len, data):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return MAVLink_gps_inject_data_message(target_system, target_component, len, data)
+
+ def gps_inject_data_send(self, target_system, target_component, len, data, force_mavlink1=False):
+ '''
+ data for injecting into the onboard GPS (used for DGPS)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ len : data length (uint8_t)
+ data : raw data (110 is enough for 12 satellites of RTCMv2) (uint8_t)
+
+ '''
+ return self.send(self.gps_inject_data_encode(target_system, target_component, len, data), force_mavlink1=force_mavlink1)
+
+ def gps2_raw_encode(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return MAVLink_gps2_raw_message(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age)
+
+ def gps2_raw_send(self, time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age, force_mavlink1=False):
+ '''
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS
+ frame).
+
+ time_usec : Timestamp (microseconds since UNIX epoch or microseconds since system boot) (uint64_t)
+ fix_type : See the GPS_FIX_TYPE enum. (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in meters * 1000 (positive for up) (int32_t)
+ eph : GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ epv : GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX (uint16_t)
+ vel : GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX (uint16_t)
+ cog : Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX (uint16_t)
+ satellites_visible : Number of satellites visible. If unknown, set to 255 (uint8_t)
+ dgps_numch : Number of DGPS satellites (uint8_t)
+ dgps_age : Age of DGPS info (uint32_t)
+
+ '''
+ return self.send(self.gps2_raw_encode(time_usec, fix_type, lat, lon, alt, eph, epv, vel, cog, satellites_visible, dgps_numch, dgps_age), force_mavlink1=force_mavlink1)
+
+ def power_status_encode(self, Vcc, Vservo, flags):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return MAVLink_power_status_message(Vcc, Vservo, flags)
+
+ def power_status_send(self, Vcc, Vservo, flags, force_mavlink1=False):
+ '''
+ Power supply status
+
+ Vcc : 5V rail voltage in millivolts (uint16_t)
+ Vservo : servo rail voltage in millivolts (uint16_t)
+ flags : power supply status flags (see MAV_POWER_STATUS enum) (uint16_t)
+
+ '''
+ return self.send(self.power_status_encode(Vcc, Vservo, flags), force_mavlink1=force_mavlink1)
+
+ def serial_control_encode(self, device, flags, timeout, baudrate, count, data):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return MAVLink_serial_control_message(device, flags, timeout, baudrate, count, data)
+
+ def serial_control_send(self, device, flags, timeout, baudrate, count, data, force_mavlink1=False):
+ '''
+ 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.
+
+ device : See SERIAL_CONTROL_DEV enum (uint8_t)
+ flags : See SERIAL_CONTROL_FLAG enum (uint8_t)
+ timeout : Timeout for reply data in milliseconds (uint16_t)
+ baudrate : Baudrate of transfer. Zero means no change. (uint32_t)
+ count : how many bytes in this transfer (uint8_t)
+ data : serial data (uint8_t)
+
+ '''
+ return self.send(self.serial_control_encode(device, flags, timeout, baudrate, count, data), force_mavlink1=force_mavlink1)
+
+ def gps_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def gps2_rtk_encode(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return MAVLink_gps2_rtk_message(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses)
+
+ def gps2_rtk_send(self, time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses, force_mavlink1=False):
+ '''
+ RTK GPS data. Gives information on the relative baseline calculation
+ the GPS is reporting
+
+ time_last_baseline_ms : Time since boot of last baseline message received in ms. (uint32_t)
+ rtk_receiver_id : Identification of connected RTK receiver. (uint8_t)
+ wn : GPS Week Number of last baseline (uint16_t)
+ tow : GPS Time of Week of last baseline (uint32_t)
+ rtk_health : GPS-specific health report for RTK data. (uint8_t)
+ rtk_rate : Rate of baseline messages being received by GPS, in HZ (uint8_t)
+ nsats : Current number of sats used for RTK calculation. (uint8_t)
+ baseline_coords_type : Coordinate system of baseline. 0 == ECEF, 1 == NED (uint8_t)
+ baseline_a_mm : Current baseline in ECEF x or NED north component in mm. (int32_t)
+ baseline_b_mm : Current baseline in ECEF y or NED east component in mm. (int32_t)
+ baseline_c_mm : Current baseline in ECEF z or NED down component in mm. (int32_t)
+ accuracy : Current estimate of baseline accuracy. (uint32_t)
+ iar_num_hypotheses : Current number of integer ambiguity hypotheses. (int32_t)
+
+ '''
+ return self.send(self.gps2_rtk_encode(time_last_baseline_ms, rtk_receiver_id, wn, tow, rtk_health, rtk_rate, nsats, baseline_coords_type, baseline_a_mm, baseline_b_mm, baseline_c_mm, accuracy, iar_num_hypotheses), force_mavlink1=force_mavlink1)
+
+ def scaled_imu3_encode(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return MAVLink_scaled_imu3_message(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag)
+
+ def scaled_imu3_send(self, time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag, force_mavlink1=False):
+ '''
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should
+ contain the scaled values to the described units
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ xacc : X acceleration (mg) (int16_t)
+ yacc : Y acceleration (mg) (int16_t)
+ zacc : Z acceleration (mg) (int16_t)
+ xgyro : Angular speed around X axis (millirad /sec) (int16_t)
+ ygyro : Angular speed around Y axis (millirad /sec) (int16_t)
+ zgyro : Angular speed around Z axis (millirad /sec) (int16_t)
+ xmag : X Magnetic field (milli tesla) (int16_t)
+ ymag : Y Magnetic field (milli tesla) (int16_t)
+ zmag : Z Magnetic field (milli tesla) (int16_t)
+
+ '''
+ return self.send(self.scaled_imu3_encode(time_boot_ms, xacc, yacc, zacc, xgyro, ygyro, zgyro, xmag, ymag, zmag), force_mavlink1=force_mavlink1)
+
+ def data_transmission_handshake_encode(self, type, size, width, height, packets, payload, jpg_quality):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return MAVLink_data_transmission_handshake_message(type, size, width, height, packets, payload, jpg_quality)
+
+ def data_transmission_handshake_send(self, type, size, width, height, packets, payload, jpg_quality, force_mavlink1=False):
+ '''
+
+
+ type : type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h) (uint8_t)
+ size : total data size in bytes (set on ACK only) (uint32_t)
+ width : Width of a matrix or image (uint16_t)
+ height : Height of a matrix or image (uint16_t)
+ packets : number of packets beeing sent (set on ACK only) (uint16_t)
+ payload : payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only) (uint8_t)
+ jpg_quality : JPEG quality out of [1,100] (uint8_t)
+
+ '''
+ return self.send(self.data_transmission_handshake_encode(type, size, width, height, packets, payload, jpg_quality), force_mavlink1=force_mavlink1)
+
+ def encapsulated_data_encode(self, seqnr, data):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return MAVLink_encapsulated_data_message(seqnr, data)
+
+ def encapsulated_data_send(self, seqnr, data, force_mavlink1=False):
+ '''
+
+
+ seqnr : sequence number (starting with 0 on every transmission) (uint16_t)
+ data : image data bytes (uint8_t)
+
+ '''
+ return self.send(self.encapsulated_data_encode(seqnr, data), force_mavlink1=force_mavlink1)
+
+ def distance_sensor_encode(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return MAVLink_distance_sensor_message(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance)
+
+ def distance_sensor_send(self, time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance, force_mavlink1=False):
+ '''
+
+
+ time_boot_ms : Time since system boot (uint32_t)
+ min_distance : Minimum distance the sensor can measure in centimeters (uint16_t)
+ max_distance : Maximum distance the sensor can measure in centimeters (uint16_t)
+ current_distance : Current distance reading (uint16_t)
+ type : Type from MAV_DISTANCE_SENSOR enum. (uint8_t)
+ id : Onboard ID of the sensor (uint8_t)
+ orientation : Direction the sensor faces from MAV_SENSOR_ORIENTATION enum. (uint8_t)
+ covariance : Measurement covariance in centimeters, 0 for unknown / invalid readings (uint8_t)
+
+ '''
+ return self.send(self.distance_sensor_encode(time_boot_ms, min_distance, max_distance, current_distance, type, id, orientation, covariance), force_mavlink1=force_mavlink1)
+
+ def terrain_request_encode(self, lat, lon, grid_spacing, mask):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return MAVLink_terrain_request_message(lat, lon, grid_spacing, mask)
+
+ def terrain_request_send(self, lat, lon, grid_spacing, mask, force_mavlink1=False):
+ '''
+ Request for terrain data and terrain status
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ mask : Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits) (uint64_t)
+
+ '''
+ return self.send(self.terrain_request_encode(lat, lon, grid_spacing, mask), force_mavlink1=force_mavlink1)
+
+ def terrain_data_encode(self, lat, lon, grid_spacing, gridbit, data):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return MAVLink_terrain_data_message(lat, lon, grid_spacing, gridbit, data)
+
+ def terrain_data_send(self, lat, lon, grid_spacing, gridbit, data, force_mavlink1=False):
+ '''
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the
+ same as a lat/lon from a TERRAIN_REQUEST
+
+ lat : Latitude of SW corner of first grid (degrees *10^7) (int32_t)
+ lon : Longitude of SW corner of first grid (in degrees *10^7) (int32_t)
+ grid_spacing : Grid spacing in meters (uint16_t)
+ gridbit : bit within the terrain request mask (uint8_t)
+ data : Terrain data in meters AMSL (int16_t)
+
+ '''
+ return self.send(self.terrain_data_encode(lat, lon, grid_spacing, gridbit, data), force_mavlink1=force_mavlink1)
+
+ def terrain_check_encode(self, lat, lon):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return MAVLink_terrain_check_message(lat, lon)
+
+ def terrain_check_send(self, lat, lon, force_mavlink1=False):
+ '''
+ Request that the vehicle report terrain height at the given location.
+ Used by GCS to check if vehicle has all terrain data
+ needed for a mission.
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+
+ '''
+ return self.send(self.terrain_check_encode(lat, lon), force_mavlink1=force_mavlink1)
+
+ def terrain_report_encode(self, lat, lon, spacing, terrain_height, current_height, pending, loaded):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return MAVLink_terrain_report_message(lat, lon, spacing, terrain_height, current_height, pending, loaded)
+
+ def terrain_report_send(self, lat, lon, spacing, terrain_height, current_height, pending, loaded, force_mavlink1=False):
+ '''
+ Response from a TERRAIN_CHECK request
+
+ lat : Latitude (degrees *10^7) (int32_t)
+ lon : Longitude (degrees *10^7) (int32_t)
+ spacing : grid spacing (zero if terrain at this location unavailable) (uint16_t)
+ terrain_height : Terrain height in meters AMSL (float)
+ current_height : Current vehicle height above lat/lon terrain height (meters) (float)
+ pending : Number of 4x4 terrain blocks waiting to be received or read from disk (uint16_t)
+ loaded : Number of 4x4 terrain blocks in memory (uint16_t)
+
+ '''
+ return self.send(self.terrain_report_encode(lat, lon, spacing, terrain_height, current_height, pending, loaded), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure2_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure2_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure2_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 2nd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure2_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def att_pos_mocap_encode(self, time_usec, q, x, y, z):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return MAVLink_att_pos_mocap_message(time_usec, q, x, y, z)
+
+ def att_pos_mocap_send(self, time_usec, q, x, y, z, force_mavlink1=False):
+ '''
+ Motion capture attitude and position
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ q : Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) (float)
+ x : X position in meters (NED) (float)
+ y : Y position in meters (NED) (float)
+ z : Z position in meters (NED) (float)
+
+ '''
+ return self.send(self.att_pos_mocap_encode(time_usec, q, x, y, z), force_mavlink1=force_mavlink1)
+
+ def set_actuator_control_target_encode(self, time_usec, group_mlx, target_system, target_component, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_set_actuator_control_target_message(time_usec, group_mlx, target_system, target_component, controls)
+
+ def set_actuator_control_target_send(self, time_usec, group_mlx, target_system, target_component, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.set_actuator_control_target_encode(time_usec, group_mlx, target_system, target_component, controls), force_mavlink1=force_mavlink1)
+
+ def actuator_control_target_encode(self, time_usec, group_mlx, controls):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return MAVLink_actuator_control_target_message(time_usec, group_mlx, controls)
+
+ def actuator_control_target_send(self, time_usec, group_mlx, controls, force_mavlink1=False):
+ '''
+ Set the vehicle attitude and body angular rates.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ 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. (uint8_t)
+ 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. (float)
+
+ '''
+ return self.send(self.actuator_control_target_encode(time_usec, group_mlx, controls), force_mavlink1=force_mavlink1)
+
+ def altitude_encode(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return MAVLink_altitude_message(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance)
+
+ def altitude_send(self, time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance, force_mavlink1=False):
+ '''
+ The current system altitude.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ altitude_monotonic : 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. (float)
+ altitude_amsl : 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 AMSL by default and not the WGS84 altitude. (float)
+ altitude_local : 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. (float)
+ altitude_relative : This is the altitude above the home position. It resets on each change of the current home position. (float)
+ altitude_terrain : 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. (float)
+ bottom_clearance : 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. (float)
+
+ '''
+ return self.send(self.altitude_encode(time_usec, altitude_monotonic, altitude_amsl, altitude_local, altitude_relative, altitude_terrain, bottom_clearance), force_mavlink1=force_mavlink1)
+
+ def resource_request_encode(self, request_id, uri_type, uri, transfer_type, storage):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return MAVLink_resource_request_message(request_id, uri_type, uri, transfer_type, storage)
+
+ def resource_request_send(self, request_id, uri_type, uri, transfer_type, storage, force_mavlink1=False):
+ '''
+ The autopilot is requesting a resource (file, binary, other type of
+ data)
+
+ request_id : Request ID. This ID should be re-used when sending back URI contents (uint8_t)
+ uri_type : The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary (uint8_t)
+ uri : The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum) (uint8_t)
+ transfer_type : The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream. (uint8_t)
+ 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). (uint8_t)
+
+ '''
+ return self.send(self.resource_request_encode(request_id, uri_type, uri, transfer_type, storage), force_mavlink1=force_mavlink1)
+
+ def scaled_pressure3_encode(self, time_boot_ms, press_abs, press_diff, temperature):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return MAVLink_scaled_pressure3_message(time_boot_ms, press_abs, press_diff, temperature)
+
+ def scaled_pressure3_send(self, time_boot_ms, press_abs, press_diff, temperature, force_mavlink1=False):
+ '''
+ Barometer readings for 3rd barometer
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ press_abs : Absolute pressure (hectopascal) (float)
+ press_diff : Differential pressure 1 (hectopascal) (float)
+ temperature : Temperature measurement (0.01 degrees celsius) (int16_t)
+
+ '''
+ return self.send(self.scaled_pressure3_encode(time_boot_ms, press_abs, press_diff, temperature), force_mavlink1=force_mavlink1)
+
+ def follow_target_encode(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return MAVLink_follow_target_message(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state)
+
+ def follow_target_send(self, timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state, force_mavlink1=False):
+ '''
+ current motion information from a designated system
+
+ timestamp : Timestamp in milliseconds since system boot (uint64_t)
+ est_capabilities : bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3) (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : AMSL, in meters (float)
+ vel : target velocity (0,0,0) for unknown (float)
+ acc : linear target acceleration (0,0,0) for unknown (float)
+ attitude_q : (1 0 0 0 for unknown) (float)
+ rates : (0 0 0 for unknown) (float)
+ position_cov : eph epv (float)
+ custom_state : button states or switches of a tracker device (uint64_t)
+
+ '''
+ return self.send(self.follow_target_encode(timestamp, est_capabilities, lat, lon, alt, vel, acc, attitude_q, rates, position_cov, custom_state), force_mavlink1=force_mavlink1)
+
+ def control_system_state_encode(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return MAVLink_control_system_state_message(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate)
+
+ def control_system_state_send(self, time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate, force_mavlink1=False):
+ '''
+ The smoothed, monotonic system state used to feed the control loops of
+ the system.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ x_acc : X acceleration in body frame (float)
+ y_acc : Y acceleration in body frame (float)
+ z_acc : Z acceleration in body frame (float)
+ x_vel : X velocity in body frame (float)
+ y_vel : Y velocity in body frame (float)
+ z_vel : Z velocity in body frame (float)
+ x_pos : X position in local frame (float)
+ y_pos : Y position in local frame (float)
+ z_pos : Z position in local frame (float)
+ airspeed : Airspeed, set to -1 if unknown (float)
+ vel_variance : Variance of body velocity estimate (float)
+ pos_variance : Variance in local position (float)
+ q : The attitude, represented as Quaternion (float)
+ roll_rate : Angular rate in roll axis (float)
+ pitch_rate : Angular rate in pitch axis (float)
+ yaw_rate : Angular rate in yaw axis (float)
+
+ '''
+ return self.send(self.control_system_state_encode(time_usec, x_acc, y_acc, z_acc, x_vel, y_vel, z_vel, x_pos, y_pos, z_pos, airspeed, vel_variance, pos_variance, q, roll_rate, pitch_rate, yaw_rate), force_mavlink1=force_mavlink1)
+
+ def battery_status_encode(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return MAVLink_battery_status_message(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining)
+
+ def battery_status_send(self, id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining, force_mavlink1=False):
+ '''
+ Battery information
+
+ id : Battery ID (uint8_t)
+ battery_function : Function of the battery (uint8_t)
+ type : Type (chemistry) of the battery (uint8_t)
+ temperature : Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature. (int16_t)
+ voltages : Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value. (uint16_t)
+ current_battery : Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current (int16_t)
+ current_consumed : Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate (int32_t)
+ energy_consumed : Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate (int32_t)
+ battery_remaining : Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery (int8_t)
+
+ '''
+ return self.send(self.battery_status_encode(id, battery_function, type, temperature, voltages, current_battery, current_consumed, energy_consumed, battery_remaining), force_mavlink1=force_mavlink1)
+
+ def autopilot_version_encode(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return MAVLink_autopilot_version_message(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid)
+
+ def autopilot_version_send(self, capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid, force_mavlink1=False):
+ '''
+ Version and capability of autopilot software
+
+ capabilities : bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum) (uint64_t)
+ flight_sw_version : Firmware version number (uint32_t)
+ middleware_sw_version : Middleware version number (uint32_t)
+ os_sw_version : Operating system version number (uint32_t)
+ board_version : HW / board version (last 8 bytes should be silicon ID, if any) (uint32_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ 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. (uint8_t)
+ vendor_id : ID of the board vendor (uint16_t)
+ product_id : ID of the product (uint16_t)
+ uid : UID if provided by hardware (uint64_t)
+
+ '''
+ return self.send(self.autopilot_version_encode(capabilities, flight_sw_version, middleware_sw_version, os_sw_version, board_version, flight_custom_version, middleware_custom_version, os_custom_version, vendor_id, product_id, uid), force_mavlink1=force_mavlink1)
+
+ def landing_target_encode(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return MAVLink_landing_target_message(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y)
+
+ def landing_target_send(self, time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y, force_mavlink1=False):
+ '''
+ The location of a landing area captured from a downward facing camera
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ target_num : The ID of the target if multiple targets are present (uint8_t)
+ frame : MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc. (uint8_t)
+ angle_x : X-axis angular offset (in radians) of the target from the center of the image (float)
+ angle_y : Y-axis angular offset (in radians) of the target from the center of the image (float)
+ distance : Distance to the target from the vehicle in meters (float)
+ size_x : Size in radians of target along x-axis (float)
+ size_y : Size in radians of target along y-axis (float)
+
+ '''
+ return self.send(self.landing_target_encode(time_usec, target_num, frame, angle_x, angle_y, distance, size_x, size_y), force_mavlink1=force_mavlink1)
+
+ def estimator_status_encode(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return MAVLink_estimator_status_message(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy)
+
+ def estimator_status_send(self, time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy, force_mavlink1=False):
+ '''
+ 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 innovaton test
+ ratios show the magnitude of the sensor innovation
+ divided by the innovation check threshold. Under
+ normal operation the innovaton 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.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ flags : Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS. (uint16_t)
+ vel_ratio : Velocity innovation test ratio (float)
+ pos_horiz_ratio : Horizontal position innovation test ratio (float)
+ pos_vert_ratio : Vertical position innovation test ratio (float)
+ mag_ratio : Magnetometer innovation test ratio (float)
+ hagl_ratio : Height above terrain innovation test ratio (float)
+ tas_ratio : True airspeed innovation test ratio (float)
+ pos_horiz_accuracy : Horizontal position 1-STD accuracy relative to the EKF local origin (m) (float)
+ pos_vert_accuracy : Vertical position 1-STD accuracy relative to the EKF local origin (m) (float)
+
+ '''
+ return self.send(self.estimator_status_encode(time_usec, flags, vel_ratio, pos_horiz_ratio, pos_vert_ratio, mag_ratio, hagl_ratio, tas_ratio, pos_horiz_accuracy, pos_vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def wind_cov_encode(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return MAVLink_wind_cov_message(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy)
+
+ def wind_cov_send(self, time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy, force_mavlink1=False):
+ '''
+
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ wind_x : Wind in X (NED) direction in m/s (float)
+ wind_y : Wind in Y (NED) direction in m/s (float)
+ wind_z : Wind in Z (NED) direction in m/s (float)
+ var_horiz : Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate. (float)
+ var_vert : Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate. (float)
+ wind_alt : AMSL altitude (m) this measurement was taken at (float)
+ horiz_accuracy : Horizontal speed 1-STD accuracy (float)
+ vert_accuracy : Vertical speed 1-STD accuracy (float)
+
+ '''
+ return self.send(self.wind_cov_encode(time_usec, wind_x, wind_y, wind_z, var_horiz, var_vert, wind_alt, horiz_accuracy, vert_accuracy), force_mavlink1=force_mavlink1)
+
+ def gps_input_encode(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return MAVLink_gps_input_message(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible)
+
+ def gps_input_send(self, time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible, force_mavlink1=False):
+ '''
+ GPS sensor input message. This is a raw sensor value sent by the GPS.
+ This is NOT the global position estimate of the sytem.
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ gps_id : ID of the GPS for multiple GPS inputs (uint8_t)
+ ignore_flags : Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided. (uint16_t)
+ time_week_ms : GPS time (milliseconds from start of GPS week) (uint32_t)
+ time_week : GPS week number (uint16_t)
+ fix_type : 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK (uint8_t)
+ lat : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ lon : Longitude (WGS84), in degrees * 1E7 (int32_t)
+ alt : Altitude (AMSL, not WGS84), in m (positive for up) (float)
+ hdop : GPS HDOP horizontal dilution of position in m (float)
+ vdop : GPS VDOP vertical dilution of position in m (float)
+ vn : GPS velocity in m/s in NORTH direction in earth-fixed NED frame (float)
+ ve : GPS velocity in m/s in EAST direction in earth-fixed NED frame (float)
+ vd : GPS velocity in m/s in DOWN direction in earth-fixed NED frame (float)
+ speed_accuracy : GPS speed accuracy in m/s (float)
+ horiz_accuracy : GPS horizontal accuracy in m (float)
+ vert_accuracy : GPS vertical accuracy in m (float)
+ satellites_visible : Number of satellites visible. (uint8_t)
+
+ '''
+ return self.send(self.gps_input_encode(time_usec, gps_id, ignore_flags, time_week_ms, time_week, fix_type, lat, lon, alt, hdop, vdop, vn, ve, vd, speed_accuracy, horiz_accuracy, vert_accuracy, satellites_visible), force_mavlink1=force_mavlink1)
+
+ def gps_rtcm_data_encode(self, flags, len, data):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return MAVLink_gps_rtcm_data_message(flags, len, data)
+
+ def gps_rtcm_data_send(self, flags, len, data, force_mavlink1=False):
+ '''
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS
+ (used for DGPS)
+
+ flags : LSB: 1 means message is fragmented (uint8_t)
+ len : data length (uint8_t)
+ data : RTCM message (may be fragmented) (uint8_t)
+
+ '''
+ return self.send(self.gps_rtcm_data_encode(flags, len, data), force_mavlink1=force_mavlink1)
+
+ def vibration_encode(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return MAVLink_vibration_message(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2)
+
+ def vibration_send(self, time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2, force_mavlink1=False):
+ '''
+ Vibration levels and accelerometer clipping
+
+ time_usec : Timestamp (micros since boot or Unix epoch) (uint64_t)
+ vibration_x : Vibration levels on X-axis (float)
+ vibration_y : Vibration levels on Y-axis (float)
+ vibration_z : Vibration levels on Z-axis (float)
+ clipping_0 : first accelerometer clipping count (uint32_t)
+ clipping_1 : second accelerometer clipping count (uint32_t)
+ clipping_2 : third accelerometer clipping count (uint32_t)
+
+ '''
+ return self.send(self.vibration_encode(time_usec, vibration_x, vibration_y, vibration_z, clipping_0, clipping_1, clipping_2), force_mavlink1=force_mavlink1)
+
+ def home_position_encode(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_home_position_message(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def home_position_send(self, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION
+ command. The position the system will return to and
+ land on. The position is set automatically by the
+ system during the takeoff in case it was not
+ explicitely set by the operator before or after. The
+ position the system will return to and land on. 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.
+
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.home_position_encode(latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def set_home_position_encode(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return MAVLink_set_home_position_message(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z)
+
+ def set_home_position_send(self, target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z, force_mavlink1=False):
+ '''
+ The position the system will return to and land on. The position is
+ set automatically by the system during the takeoff in
+ case it was not explicitely set by the operator before
+ or after. 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.
+
+ target_system : System ID. (uint8_t)
+ latitude : Latitude (WGS84), in degrees * 1E7 (int32_t)
+ longitude : Longitude (WGS84, in degrees * 1E7 (int32_t)
+ altitude : Altitude (AMSL), in meters * 1000 (positive for up) (int32_t)
+ x : Local X position of this position in the local coordinate frame (float)
+ y : Local Y position of this position in the local coordinate frame (float)
+ z : Local Z position of this position in the local coordinate frame (float)
+ q : World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground (float)
+ approach_x : 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. (float)
+ approach_y : 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. (float)
+ approach_z : 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. (float)
+
+ '''
+ return self.send(self.set_home_position_encode(target_system, latitude, longitude, altitude, x, y, z, q, approach_x, approach_y, approach_z), force_mavlink1=force_mavlink1)
+
+ def message_interval_encode(self, message_id, interval_us):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return MAVLink_message_interval_message(message_id, interval_us)
+
+ def message_interval_send(self, message_id, interval_us, force_mavlink1=False):
+ '''
+ This interface replaces DATA_STREAM
+
+ message_id : The ID of the requested MAVLink message. v1.0 is limited to 254 messages. (uint16_t)
+ interval_us : The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent. (int32_t)
+
+ '''
+ return self.send(self.message_interval_encode(message_id, interval_us), force_mavlink1=force_mavlink1)
+
+ def extended_sys_state_encode(self, vtol_state, landed_state):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return MAVLink_extended_sys_state_message(vtol_state, landed_state)
+
+ def extended_sys_state_send(self, vtol_state, landed_state, force_mavlink1=False):
+ '''
+ Provides state for additional features
+
+ vtol_state : The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration. (uint8_t)
+ landed_state : The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown. (uint8_t)
+
+ '''
+ return self.send(self.extended_sys_state_encode(vtol_state, landed_state), force_mavlink1=force_mavlink1)
+
+ def adsb_vehicle_encode(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return MAVLink_adsb_vehicle_message(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk)
+
+ def adsb_vehicle_send(self, ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk, force_mavlink1=False):
+ '''
+ The location and information of an ADSB vehicle
+
+ ICAO_address : ICAO address (uint32_t)
+ lat : Latitude, expressed as degrees * 1E7 (int32_t)
+ lon : Longitude, expressed as degrees * 1E7 (int32_t)
+ altitude_type : Type from ADSB_ALTITUDE_TYPE enum (uint8_t)
+ altitude : Altitude(ASL) in millimeters (int32_t)
+ heading : Course over ground in centidegrees (uint16_t)
+ hor_velocity : The horizontal velocity in centimeters/second (uint16_t)
+ ver_velocity : The vertical velocity in centimeters/second, positive is up (int16_t)
+ callsign : The callsign, 8+null (char)
+ emitter_type : Type from ADSB_EMITTER_TYPE enum (uint8_t)
+ tslc : Time since last communication in seconds (uint8_t)
+ flags : Flags to indicate various statuses including valid data fields (uint16_t)
+ squawk : Squawk code (uint16_t)
+
+ '''
+ return self.send(self.adsb_vehicle_encode(ICAO_address, lat, lon, altitude_type, altitude, heading, hor_velocity, ver_velocity, callsign, emitter_type, tslc, flags, squawk), force_mavlink1=force_mavlink1)
+
+ def collision_encode(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return MAVLink_collision_message(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta)
+
+ def collision_send(self, src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta, force_mavlink1=False):
+ '''
+ Information about a potential collision
+
+ src : Collision data source (uint8_t)
+ id : Unique identifier, domain based on src field (uint32_t)
+ action : Action that is being taken to avoid this collision (uint8_t)
+ threat_level : How concerned the aircraft is about this collision (uint8_t)
+ time_to_minimum_delta : Estimated time until collision occurs (seconds) (float)
+ altitude_minimum_delta : Closest vertical distance in meters between vehicle and object (float)
+ horizontal_minimum_delta : Closest horizontal distance in meteres between vehicle and object (float)
+
+ '''
+ return self.send(self.collision_encode(src, id, action, threat_level, time_to_minimum_delta, altitude_minimum_delta, horizontal_minimum_delta), force_mavlink1=force_mavlink1)
+
+ def v2_extension_encode(self, target_network, target_system, target_component, message_type, payload):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return MAVLink_v2_extension_message(target_network, target_system, target_component, message_type, payload)
+
+ def v2_extension_send(self, target_network, target_system, target_component, message_type, payload, force_mavlink1=False):
+ '''
+ Message implementing parts of the V2 payload specs in V1 frames for
+ transitional support.
+
+ target_network : Network ID (0 for broadcast) (uint8_t)
+ target_system : System ID (0 for broadcast) (uint8_t)
+ target_component : Component ID (0 for broadcast) (uint8_t)
+ 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/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. (uint16_t)
+ payload : Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification. (uint8_t)
+
+ '''
+ return self.send(self.v2_extension_encode(target_network, target_system, target_component, message_type, payload), force_mavlink1=force_mavlink1)
+
+ def memory_vect_encode(self, address, ver, type, value):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return MAVLink_memory_vect_message(address, ver, type, value)
+
+ def memory_vect_send(self, address, ver, type, value, force_mavlink1=False):
+ '''
+ 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.
+
+ address : Starting address of the debug variables (uint16_t)
+ ver : Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below (uint8_t)
+ 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 (uint8_t)
+ value : Memory contents at specified address (int8_t)
+
+ '''
+ return self.send(self.memory_vect_encode(address, ver, type, value), force_mavlink1=force_mavlink1)
+
+ def debug_vect_encode(self, name, time_usec, x, y, z):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return MAVLink_debug_vect_message(name, time_usec, x, y, z)
+
+ def debug_vect_send(self, name, time_usec, x, y, z, force_mavlink1=False):
+ '''
+
+
+ name : Name (char)
+ time_usec : Timestamp (uint64_t)
+ x : x (float)
+ y : y (float)
+ z : z (float)
+
+ '''
+ return self.send(self.debug_vect_encode(name, time_usec, x, y, z), force_mavlink1=force_mavlink1)
+
+ def named_value_float_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return MAVLink_named_value_float_message(time_boot_ms, name, value)
+
+ def named_value_float_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Floating point value (float)
+
+ '''
+ return self.send(self.named_value_float_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def named_value_int_encode(self, time_boot_ms, name, value):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return MAVLink_named_value_int_message(time_boot_ms, name, value)
+
+ def named_value_int_send(self, time_boot_ms, name, value, force_mavlink1=False):
+ '''
+ 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.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ name : Name of the debug variable (char)
+ value : Signed integer value (int32_t)
+
+ '''
+ return self.send(self.named_value_int_encode(time_boot_ms, name, value), force_mavlink1=force_mavlink1)
+
+ def statustext_encode(self, severity, text):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return MAVLink_statustext_message(severity, text)
+
+ def statustext_send(self, severity, text, force_mavlink1=False):
+ '''
+ 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).
+
+ severity : Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. (uint8_t)
+ text : Status text message, without null termination character (char)
+
+ '''
+ return self.send(self.statustext_encode(severity, text), force_mavlink1=force_mavlink1)
+
+ def debug_encode(self, time_boot_ms, ind, value):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return MAVLink_debug_message(time_boot_ms, ind, value)
+
+ def debug_send(self, time_boot_ms, ind, value, force_mavlink1=False):
+ '''
+ Send a debug value. The index is used to discriminate between values.
+ These values show up in the plot of QGroundControl as
+ DEBUG N.
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ ind : index of debug variable (uint8_t)
+ value : DEBUG value (float)
+
+ '''
+ return self.send(self.debug_encode(time_boot_ms, ind, value), force_mavlink1=force_mavlink1)
+
+ def setup_signing_encode(self, target_system, target_component, secret_key, initial_timestamp):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return MAVLink_setup_signing_message(target_system, target_component, secret_key, initial_timestamp)
+
+ def setup_signing_send(self, target_system, target_component, secret_key, initial_timestamp, force_mavlink1=False):
+ '''
+ Setup a MAVLink2 signing key. If called with secret_key of all zero
+ and zero initial_timestamp will disable signing
+
+ target_system : system id of the target (uint8_t)
+ target_component : component ID of the target (uint8_t)
+ secret_key : signing key (uint8_t)
+ initial_timestamp : initial timestamp (uint64_t)
+
+ '''
+ return self.send(self.setup_signing_encode(target_system, target_component, secret_key, initial_timestamp), force_mavlink1=force_mavlink1)
+
+ def button_change_encode(self, time_boot_ms, last_change_ms, state):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return MAVLink_button_change_message(time_boot_ms, last_change_ms, state)
+
+ def button_change_send(self, time_boot_ms, last_change_ms, state, force_mavlink1=False):
+ '''
+ Report button state change
+
+ time_boot_ms : Timestamp (milliseconds since system boot) (uint32_t)
+ last_change_ms : Time of last change of button state (uint32_t)
+ state : Bitmap state of buttons (uint8_t)
+
+ '''
+ return self.send(self.button_change_encode(time_boot_ms, last_change_ms, state), force_mavlink1=force_mavlink1)
+
+ def play_tune_encode(self, target_system, target_component, tune):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return MAVLink_play_tune_message(target_system, target_component, tune)
+
+ def play_tune_send(self, target_system, target_component, tune, force_mavlink1=False):
+ '''
+ Control vehicle tone generation (buzzer)
+
+ target_system : System ID (uint8_t)
+ target_component : Component ID (uint8_t)
+ tune : tune in board specific format (char)
+
+ '''
+ return self.send(self.play_tune_encode(target_system, target_component, tune), force_mavlink1=force_mavlink1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.xml
new file mode 100644
index 000000000..bb57e8435
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/dialects/v20/ualberta.xml
@@ -0,0 +1,76 @@
+
+
+ common.xml
+
+
+ Available autopilot modes for ualberta uav
+
+ Raw input pulse widts sent to output
+
+
+ Inputs are normalized using calibration, the converted back to raw pulse widths for output
+
+
+ dfsdfs
+
+
+ dfsfds
+
+
+ dfsdfsdfs
+
+
+
+ Navigation filter mode
+
+
+ AHRS mode
+
+
+ INS/GPS initialization mode
+
+
+ INS/GPS mode
+
+
+
+ Mode currently commanded by pilot
+
+ sdf
+
+
+ dfs
+
+
+ Rotomotion mode
+
+
+
+
+
+ Accelerometer and Gyro biases from the navigation filter
+ Timestamp (microseconds)
+ b_f[0]
+ b_f[1]
+ b_f[2]
+ b_f[0]
+ b_f[1]
+ b_f[2]
+
+
+ Complete set of calibration parameters for the radio
+ Aileron setpoints: left, center, right
+ Elevator setpoints: nose down, center, nose up
+ Rudder setpoints: nose left, center, nose right
+ Tail gyro mode/gain setpoints: heading hold, rate mode
+ Pitch curve setpoints (every 25%)
+ Throttle curve setpoints (every 25%)
+
+
+ System status specific to ualberta uav
+ System mode, see UALBERTA_AUTOPILOT_MODE ENUM
+ Navigation mode, see UALBERTA_NAV_MODE ENUM
+ Pilot mode, see UALBERTA_PILOT_MODE
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/fgFDM.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/fgFDM.py
new file mode 100644
index 000000000..d381afa04
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/fgFDM.py
@@ -0,0 +1,212 @@
+#!/usr/bin/env python
+# parse and construct FlightGear NET FDM packets
+# Andrew Tridgell, November 2011
+# released under GNU GPL version 2 or later
+
+import struct, math
+
+class fgFDMError(Exception):
+ '''fgFDM error class'''
+ def __init__(self, msg):
+ Exception.__init__(self, msg)
+ self.message = 'fgFDMError: ' + msg
+
+class fgFDMVariable(object):
+ '''represent a single fgFDM variable'''
+ def __init__(self, index, arraylength, units):
+ self.index = index
+ self.arraylength = arraylength
+ self.units = units
+
+class fgFDMVariableList(object):
+ '''represent a list of fgFDM variable'''
+ def __init__(self):
+ self.vars = {}
+ self._nextidx = 0
+
+ def add(self, varname, arraylength=1, units=None):
+ self.vars[varname] = fgFDMVariable(self._nextidx, arraylength, units=units)
+ self._nextidx += arraylength
+
+class fgFDM(object):
+ '''a flightgear native FDM parser/generator'''
+ def __init__(self):
+ '''init a fgFDM object'''
+ self.FG_NET_FDM_VERSION = 24
+ self.pack_string = '>I 4x 3d 6f 11f 3f 2f I 4I 4f 4f 4f 4f 4f 4f 4f 4f 4f I 4f I 3I 3f 3f 3f I i f 10f'
+ self.values = [0]*98
+
+ self.FG_MAX_ENGINES = 4
+ self.FG_MAX_WHEELS = 3
+ self.FG_MAX_TANKS = 4
+
+ # supported unit mappings
+ self.unitmap = {
+ ('radians', 'degrees') : math.degrees(1),
+ ('rps', 'dps') : math.degrees(1),
+ ('feet', 'meters') : 0.3048,
+ ('fps', 'mps') : 0.3048,
+ ('knots', 'mps') : 0.514444444,
+ ('knots', 'fps') : 0.514444444/0.3048,
+ ('fpss', 'mpss') : 0.3048,
+ ('seconds', 'minutes') : 60,
+ ('seconds', 'hours') : 3600,
+ }
+
+ # build a mapping between variable name and index in the values array
+ # note that the order of this initialisation is critical - it must
+ # match the wire structure
+ self.mapping = fgFDMVariableList()
+ self.mapping.add('version')
+
+ # position
+ self.mapping.add('longitude', units='radians') # geodetic (radians)
+ self.mapping.add('latitude', units='radians') # geodetic (radians)
+ self.mapping.add('altitude', units='meters') # above sea level (meters)
+ self.mapping.add('agl', units='meters') # above ground level (meters)
+
+ # attitude
+ self.mapping.add('phi', units='radians') # roll (radians)
+ self.mapping.add('theta', units='radians') # pitch (radians)
+ self.mapping.add('psi', units='radians') # yaw or true heading (radians)
+ self.mapping.add('alpha', units='radians') # angle of attack (radians)
+ self.mapping.add('beta', units='radians') # side slip angle (radians)
+
+ # Velocities
+ self.mapping.add('phidot', units='rps') # roll rate (radians/sec)
+ self.mapping.add('thetadot', units='rps') # pitch rate (radians/sec)
+ self.mapping.add('psidot', units='rps') # yaw rate (radians/sec)
+ self.mapping.add('vcas', units='fps') # calibrated airspeed
+ self.mapping.add('climb_rate', units='fps') # feet per second
+ self.mapping.add('v_north', units='fps') # north velocity in local/body frame, fps
+ self.mapping.add('v_east', units='fps') # east velocity in local/body frame, fps
+ self.mapping.add('v_down', units='fps') # down/vertical velocity in local/body frame, fps
+ self.mapping.add('v_wind_body_north', units='fps') # north velocity in local/body frame
+ self.mapping.add('v_wind_body_east', units='fps') # east velocity in local/body frame
+ self.mapping.add('v_wind_body_down', units='fps') # down/vertical velocity in local/body
+
+ # Accelerations
+ self.mapping.add('A_X_pilot', units='fpss') # X accel in body frame ft/sec^2
+ self.mapping.add('A_Y_pilot', units='fpss') # Y accel in body frame ft/sec^2
+ self.mapping.add('A_Z_pilot', units='fpss') # Z accel in body frame ft/sec^2
+
+ # Stall
+ self.mapping.add('stall_warning') # 0.0 - 1.0 indicating the amount of stall
+ self.mapping.add('slip_deg', units='degrees') # slip ball deflection
+
+ # Engine status
+ self.mapping.add('num_engines') # Number of valid engines
+ self.mapping.add('eng_state', self.FG_MAX_ENGINES) # Engine state (off, cranking, running)
+ self.mapping.add('rpm', self.FG_MAX_ENGINES) # Engine RPM rev/min
+ self.mapping.add('fuel_flow', self.FG_MAX_ENGINES) # Fuel flow gallons/hr
+ self.mapping.add('fuel_px', self.FG_MAX_ENGINES) # Fuel pressure psi
+ self.mapping.add('egt', self.FG_MAX_ENGINES) # Exhuast gas temp deg F
+ self.mapping.add('cht', self.FG_MAX_ENGINES) # Cylinder head temp deg F
+ self.mapping.add('mp_osi', self.FG_MAX_ENGINES) # Manifold pressure
+ self.mapping.add('tit', self.FG_MAX_ENGINES) # Turbine Inlet Temperature
+ self.mapping.add('oil_temp', self.FG_MAX_ENGINES) # Oil temp deg F
+ self.mapping.add('oil_px', self.FG_MAX_ENGINES) # Oil pressure psi
+
+ # Consumables
+ self.mapping.add('num_tanks') # Max number of fuel tanks
+ self.mapping.add('fuel_quantity', self.FG_MAX_TANKS)
+
+ # Gear status
+ self.mapping.add('num_wheels')
+ self.mapping.add('wow', self.FG_MAX_WHEELS)
+ self.mapping.add('gear_pos', self.FG_MAX_WHEELS)
+ self.mapping.add('gear_steer', self.FG_MAX_WHEELS)
+ self.mapping.add('gear_compression', self.FG_MAX_WHEELS)
+
+ # Environment
+ self.mapping.add('cur_time', units='seconds') # current unix time
+ self.mapping.add('warp', units='seconds') # offset in seconds to unix time
+ self.mapping.add('visibility', units='meters') # visibility in meters (for env. effects)
+
+ # Control surface positions (normalized values)
+ self.mapping.add('elevator')
+ self.mapping.add('elevator_trim_tab')
+ self.mapping.add('left_flap')
+ self.mapping.add('right_flap')
+ self.mapping.add('left_aileron')
+ self.mapping.add('right_aileron')
+ self.mapping.add('rudder')
+ self.mapping.add('nose_wheel')
+ self.mapping.add('speedbrake')
+ self.mapping.add('spoilers')
+
+ self._packet_size = struct.calcsize(self.pack_string)
+
+ self.set('version', self.FG_NET_FDM_VERSION)
+
+ if len(self.values) != self.mapping._nextidx:
+ raise fgFDMError('Invalid variable list in initialisation')
+
+ def packet_size(self):
+ '''return expected size of FG FDM packets'''
+ return self._packet_size
+
+ def convert(self, value, fromunits, tounits):
+ '''convert a value from one set of units to another'''
+ if fromunits == tounits:
+ return value
+ if (fromunits,tounits) in self.unitmap:
+ return value * self.unitmap[(fromunits,tounits)]
+ if (tounits,fromunits) in self.unitmap:
+ return value / self.unitmap[(tounits,fromunits)]
+ raise fgFDMError("unknown unit mapping (%s,%s)" % (fromunits, tounits))
+
+
+ def units(self, varname):
+ '''return the default units of a variable'''
+ if not varname in self.mapping.vars:
+ raise fgFDMError('Unknown variable %s' % varname)
+ return self.mapping.vars[varname].units
+
+
+ def variables(self):
+ '''return a list of available variables'''
+ return sorted(list(self.mapping.vars.keys()),
+ key = lambda v : self.mapping.vars[v].index)
+
+
+ def get(self, varname, idx=0, units=None):
+ '''get a variable value'''
+ if not varname in self.mapping.vars:
+ raise fgFDMError('Unknown variable %s' % varname)
+ if idx >= self.mapping.vars[varname].arraylength:
+ raise fgFDMError('index of %s beyond end of array idx=%u arraylength=%u' % (
+ varname, idx, self.mapping.vars[varname].arraylength))
+ value = self.values[self.mapping.vars[varname].index + idx]
+ if units:
+ value = self.convert(value, self.mapping.vars[varname].units, units)
+ return value
+
+ def set(self, varname, value, idx=0, units=None):
+ '''set a variable value'''
+ if not varname in self.mapping.vars:
+ raise fgFDMError('Unknown variable %s' % varname)
+ if idx >= self.mapping.vars[varname].arraylength:
+ raise fgFDMError('index of %s beyond end of array idx=%u arraylength=%u' % (
+ varname, idx, self.mapping.vars[varname].arraylength))
+ if units:
+ value = self.convert(value, units, self.mapping.vars[varname].units)
+ # avoid range errors when packing into 4 byte floats
+ if math.isinf(value) or math.isnan(value) or math.fabs(value) > 3.4e38:
+ value = 0
+ self.values[self.mapping.vars[varname].index + idx] = value
+
+ def parse(self, buf):
+ '''parse a FD FDM buffer'''
+ try:
+ t = struct.unpack(self.pack_string, buf)
+ except struct.error as msg:
+ raise fgFDMError('unable to parse - %s' % msg)
+ self.values = list(t)
+
+ def pack(self):
+ '''pack a FD FDM buffer from current values'''
+ for i in range(len(self.values)):
+ if math.isnan(self.values[i]):
+ self.values[i] = 0
+ return struct.pack(self.pack_string, *self.values)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/checksum.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/checksum.h
new file mode 100644
index 000000000..0f30b659f
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/checksum.h
@@ -0,0 +1,96 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _CHECKSUM_H_
+#define _CHECKSUM_H_
+
+// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
+#if (defined _MSC_VER) && (_MSC_VER < 1600)
+#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
+#endif
+
+#include
+
+/**
+ *
+ * CALCULATE THE CHECKSUM
+ *
+ */
+
+#define X25_INIT_CRC 0xffff
+#define X25_VALIDATE_CRC 0xf0b8
+
+#ifndef HAVE_CRC_ACCUMULATE
+/**
+ * @brief Accumulate the X.25 CRC by adding one char at a time.
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new char to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum)
+{
+ /*Accumulate one byte of data into the CRC*/
+ uint8_t tmp;
+
+ tmp = data ^ (uint8_t)(*crcAccum &0xff);
+ tmp ^= (tmp<<4);
+ *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
+}
+#endif
+
+
+/**
+ * @brief Initiliaze the buffer for the X.25 CRC
+ *
+ * @param crcAccum the 16 bit X.25 CRC
+ */
+static inline void crc_init(uint16_t* crcAccum)
+{
+ *crcAccum = X25_INIT_CRC;
+}
+
+
+/**
+ * @brief Calculates the X.25 checksum on a byte buffer
+ *
+ * @param pBuffer buffer containing the byte array to hash
+ * @param length length of the byte array
+ * @return the checksum over the buffer bytes
+ **/
+static inline uint16_t crc_calculate(const uint8_t* pBuffer, uint16_t length)
+{
+ uint16_t crcTmp;
+ crc_init(&crcTmp);
+ while (length--) {
+ crc_accumulate(*pBuffer++, &crcTmp);
+ }
+ return crcTmp;
+}
+
+
+/**
+ * @brief Accumulate the X.25 CRC by adding an array of bytes
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new bytes to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate_buffer(uint16_t *crcAccum, const char *pBuffer, uint16_t length)
+{
+ const uint8_t *p = (const uint8_t *)pBuffer;
+ while (length--) {
+ crc_accumulate(*p++, crcAccum);
+ }
+}
+
+#endif /* _CHECKSUM_H_ */
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_conversions.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_conversions.h
new file mode 100644
index 000000000..63bcfa39f
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_conversions.h
@@ -0,0 +1,211 @@
+#ifndef _MAVLINK_CONVERSIONS_H_
+#define _MAVLINK_CONVERSIONS_H_
+
+/* enable math defines on Windows */
+#ifdef _MSC_VER
+#ifndef _USE_MATH_DEFINES
+#define _USE_MATH_DEFINES
+#endif
+#endif
+#include
+
+#ifndef M_PI_2
+ #define M_PI_2 ((float)asin(1))
+#endif
+
+/**
+ * @file mavlink_conversions.h
+ *
+ * These conversion functions follow the NASA rotation standards definition file
+ * available online.
+ *
+ * Their intent is to lower the barrier for MAVLink adopters to use gimbal-lock free
+ * (both rotation matrices, sometimes called DCM, and quaternions are gimbal-lock free)
+ * rotation representations. Euler angles (roll, pitch, yaw) will be phased out of the
+ * protocol as widely as possible.
+ *
+ * @author James Goppert
+ * @author Thomas Gubler
+ */
+
+
+/**
+ * Converts a quaternion to a rotation matrix
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_dcm(const float quaternion[4], float dcm[3][3])
+{
+ double a = quaternion[0];
+ double b = quaternion[1];
+ double c = quaternion[2];
+ double d = quaternion[3];
+ double aSq = a * a;
+ double bSq = b * b;
+ double cSq = c * c;
+ double dSq = d * d;
+ dcm[0][0] = aSq + bSq - cSq - dSq;
+ dcm[0][1] = 2 * (b * c - a * d);
+ dcm[0][2] = 2 * (a * c + b * d);
+ dcm[1][0] = 2 * (b * c + a * d);
+ dcm[1][1] = aSq - bSq + cSq - dSq;
+ dcm[1][2] = 2 * (c * d - a * b);
+ dcm[2][0] = 2 * (b * d - a * c);
+ dcm[2][1] = 2 * (a * b + c * d);
+ dcm[2][2] = aSq - bSq - cSq + dSq;
+}
+
+
+/**
+ * Converts a rotation matrix to euler angles
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_dcm_to_euler(const float dcm[3][3], float* roll, float* pitch, float* yaw)
+{
+ float phi, theta, psi;
+ theta = asin(-dcm[2][0]);
+
+ if (fabsf(theta - (float)M_PI_2) < 1.0e-3f) {
+ phi = 0.0f;
+ psi = (atan2f(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1]) + phi);
+
+ } else if (fabsf(theta + (float)M_PI_2) < 1.0e-3f) {
+ phi = 0.0f;
+ psi = atan2f(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1] - phi);
+
+ } else {
+ phi = atan2f(dcm[2][1], dcm[2][2]);
+ psi = atan2f(dcm[1][0], dcm[0][0]);
+ }
+
+ *roll = phi;
+ *pitch = theta;
+ *yaw = psi;
+}
+
+
+/**
+ * Converts a quaternion to euler angles
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_euler(const float quaternion[4], float* roll, float* pitch, float* yaw)
+{
+ float dcm[3][3];
+ mavlink_quaternion_to_dcm(quaternion, dcm);
+ mavlink_dcm_to_euler((const float(*)[3])dcm, roll, pitch, yaw);
+}
+
+
+/**
+ * Converts euler angles to a quaternion
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_euler_to_quaternion(float roll, float pitch, float yaw, float quaternion[4])
+{
+ float cosPhi_2 = cosf(roll / 2);
+ float sinPhi_2 = sinf(roll / 2);
+ float cosTheta_2 = cosf(pitch / 2);
+ float sinTheta_2 = sinf(pitch / 2);
+ float cosPsi_2 = cosf(yaw / 2);
+ float sinPsi_2 = sinf(yaw / 2);
+ quaternion[0] = (cosPhi_2 * cosTheta_2 * cosPsi_2 +
+ sinPhi_2 * sinTheta_2 * sinPsi_2);
+ quaternion[1] = (sinPhi_2 * cosTheta_2 * cosPsi_2 -
+ cosPhi_2 * sinTheta_2 * sinPsi_2);
+ quaternion[2] = (cosPhi_2 * sinTheta_2 * cosPsi_2 +
+ sinPhi_2 * cosTheta_2 * sinPsi_2);
+ quaternion[3] = (cosPhi_2 * cosTheta_2 * sinPsi_2 -
+ sinPhi_2 * sinTheta_2 * cosPsi_2);
+}
+
+
+/**
+ * Converts a rotation matrix to a quaternion
+ * Reference:
+ * - Shoemake, Quaternions,
+ * http://www.cs.ucr.edu/~vbz/resources/quatut.pdf
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_dcm_to_quaternion(const float dcm[3][3], float quaternion[4])
+{
+ float tr = dcm[0][0] + dcm[1][1] + dcm[2][2];
+ if (tr > 0.0f) {
+ float s = sqrtf(tr + 1.0f);
+ quaternion[0] = s * 0.5f;
+ s = 0.5f / s;
+ quaternion[1] = (dcm[2][1] - dcm[1][2]) * s;
+ quaternion[2] = (dcm[0][2] - dcm[2][0]) * s;
+ quaternion[3] = (dcm[1][0] - dcm[0][1]) * s;
+ } else {
+ /* Find maximum diagonal element in dcm
+ * store index in dcm_i */
+ int dcm_i = 0;
+ int i;
+ for (i = 1; i < 3; i++) {
+ if (dcm[i][i] > dcm[dcm_i][dcm_i]) {
+ dcm_i = i;
+ }
+ }
+
+ int dcm_j = (dcm_i + 1) % 3;
+ int dcm_k = (dcm_i + 2) % 3;
+
+ float s = sqrtf((dcm[dcm_i][dcm_i] - dcm[dcm_j][dcm_j] -
+ dcm[dcm_k][dcm_k]) + 1.0f);
+ quaternion[dcm_i + 1] = s * 0.5f;
+ s = 0.5f / s;
+ quaternion[dcm_j + 1] = (dcm[dcm_i][dcm_j] + dcm[dcm_j][dcm_i]) * s;
+ quaternion[dcm_k + 1] = (dcm[dcm_k][dcm_i] + dcm[dcm_i][dcm_k]) * s;
+ quaternion[0] = (dcm[dcm_k][dcm_j] - dcm[dcm_j][dcm_k]) * s;
+ }
+}
+
+
+/**
+ * Converts euler angles to a rotation matrix
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_euler_to_dcm(float roll, float pitch, float yaw, float dcm[3][3])
+{
+ float cosPhi = cosf(roll);
+ float sinPhi = sinf(roll);
+ float cosThe = cosf(pitch);
+ float sinThe = sinf(pitch);
+ float cosPsi = cosf(yaw);
+ float sinPsi = sinf(yaw);
+
+ dcm[0][0] = cosThe * cosPsi;
+ dcm[0][1] = -cosPhi * sinPsi + sinPhi * sinThe * cosPsi;
+ dcm[0][2] = sinPhi * sinPsi + cosPhi * sinThe * cosPsi;
+
+ dcm[1][0] = cosThe * sinPsi;
+ dcm[1][1] = cosPhi * cosPsi + sinPhi * sinThe * sinPsi;
+ dcm[1][2] = -sinPhi * cosPsi + cosPhi * sinThe * sinPsi;
+
+ dcm[2][0] = -sinThe;
+ dcm[2][1] = sinPhi * cosThe;
+ dcm[2][2] = cosPhi * cosThe;
+}
+
+#endif
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_helpers.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_helpers.h
new file mode 100644
index 000000000..2587cdf32
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_helpers.h
@@ -0,0 +1,678 @@
+#ifndef _MAVLINK_HELPERS_H_
+#define _MAVLINK_HELPERS_H_
+
+#include "string.h"
+#include "checksum.h"
+#include "mavlink_types.h"
+#include "mavlink_conversions.h"
+
+#ifndef MAVLINK_HELPER
+#define MAVLINK_HELPER
+#endif
+
+/*
+ * Internal function to give access to the channel status for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_STATUS
+MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan)
+{
+#ifdef MAVLINK_EXTERNAL_RX_STATUS
+ // No m_mavlink_status array defined in function,
+ // has to be defined externally
+#else
+ static mavlink_status_t m_mavlink_status[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+ return &m_mavlink_status[chan];
+}
+#endif
+
+/*
+ * Internal function to give access to the channel buffer for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_BUFFER
+MAVLINK_HELPER mavlink_message_t* mavlink_get_channel_buffer(uint8_t chan)
+{
+
+#ifdef MAVLINK_EXTERNAL_RX_BUFFER
+ // No m_mavlink_buffer array defined in function,
+ // has to be defined externally
+#else
+ static mavlink_message_t m_mavlink_buffer[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+ return &m_mavlink_buffer[chan];
+}
+#endif
+
+/**
+ * @brief Reset the status of a channel.
+ */
+MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan)
+{
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+}
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment
+ *
+ * This function calculates the checksum and sets length and aircraft id correctly.
+ * It assumes that the message id and the payload are already correctly set. This function
+ * can also be used if the message header has already been written before (as in mavlink_msg_xxx_pack
+ * instead of mavlink_msg_xxx_pack_headerless), it just introduces little extra overhead.
+ *
+ * @param msg Message to finalize
+ * @param system_id Id of the sending (this) system, 1-127
+ * @param length Message length
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra)
+#else
+MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t length)
+#endif
+{
+ // This is only used for the v2 protocol and we silence it here
+ (void)min_length;
+ // This code part is the same for all messages;
+ msg->magic = MAVLINK_STX;
+ msg->len = length;
+ msg->sysid = system_id;
+ msg->compid = component_id;
+ // One sequence number per channel
+ msg->seq = mavlink_get_channel_status(chan)->current_tx_seq;
+ mavlink_get_channel_status(chan)->current_tx_seq = mavlink_get_channel_status(chan)->current_tx_seq+1;
+ msg->checksum = crc_calculate(((const uint8_t*)(msg)) + 3, MAVLINK_CORE_HEADER_LEN);
+ crc_accumulate_buffer(&msg->checksum, _MAV_PAYLOAD(msg), msg->len);
+#if MAVLINK_CRC_EXTRA
+ crc_accumulate(crc_extra, &msg->checksum);
+#endif
+ mavlink_ck_a(msg) = (uint8_t)(msg->checksum & 0xFF);
+ mavlink_ck_b(msg) = (uint8_t)(msg->checksum >> 8);
+
+ return length + MAVLINK_NUM_NON_PAYLOAD_BYTES;
+}
+
+
+/**
+ * @brief Finalize a MAVLink message with MAVLINK_COMM_0 as default channel
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra)
+{
+ return mavlink_finalize_message_chan(msg, system_id, component_id, MAVLINK_COMM_0, min_length, length, crc_extra);
+}
+#else
+MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t length)
+{
+ return mavlink_finalize_message_chan(msg, system_id, component_id, MAVLINK_COMM_0, length);
+}
+#endif
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment and send
+ */
+#if MAVLINK_CRC_EXTRA
+MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra)
+#else
+MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet, uint8_t length)
+#endif
+{
+ uint16_t checksum;
+ uint8_t buf[MAVLINK_NUM_HEADER_BYTES];
+ uint8_t ck[2];
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ buf[0] = MAVLINK_STX;
+ buf[1] = length;
+ buf[2] = status->current_tx_seq;
+ buf[3] = mavlink_system.sysid;
+ buf[4] = mavlink_system.compid;
+ buf[5] = msgid;
+ status->current_tx_seq++;
+ checksum = crc_calculate((const uint8_t*)&buf[1], MAVLINK_CORE_HEADER_LEN);
+ crc_accumulate_buffer(&checksum, packet, length);
+#if MAVLINK_CRC_EXTRA
+ crc_accumulate(crc_extra, &checksum);
+#endif
+ ck[0] = (uint8_t)(checksum & 0xFF);
+ ck[1] = (uint8_t)(checksum >> 8);
+
+ MAVLINK_START_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)length);
+ _mavlink_send_uart(chan, (const char *)buf, MAVLINK_NUM_HEADER_BYTES);
+ _mavlink_send_uart(chan, packet, length);
+ _mavlink_send_uart(chan, (const char *)ck, 2);
+ MAVLINK_END_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)length);
+}
+
+/**
+ * @brief re-send a message over a uart channel
+ * this is more stack efficient than re-marshalling the message
+ */
+MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg)
+{
+ uint8_t ck[2];
+
+ ck[0] = (uint8_t)(msg->checksum & 0xFF);
+ ck[1] = (uint8_t)(msg->checksum >> 8);
+ // XXX use the right sequence here
+
+ MAVLINK_START_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + msg->len);
+ _mavlink_send_uart(chan, (const char *)&msg->magic, MAVLINK_NUM_HEADER_BYTES);
+ _mavlink_send_uart(chan, _MAV_PAYLOAD(msg), msg->len);
+ _mavlink_send_uart(chan, (const char *)ck, 2);
+ MAVLINK_END_UART_SEND(chan, MAVLINK_NUM_NON_PAYLOAD_BYTES + msg->len);
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+/**
+ * @brief Pack a message to send it over a serial byte stream
+ */
+MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buffer, const mavlink_message_t *msg)
+{
+ memcpy(buffer, (const uint8_t *)&msg->magic, MAVLINK_NUM_HEADER_BYTES + (uint16_t)msg->len);
+
+ uint8_t *ck = buffer + (MAVLINK_NUM_HEADER_BYTES + (uint16_t)msg->len);
+
+ ck[0] = (uint8_t)(msg->checksum & 0xFF);
+ ck[1] = (uint8_t)(msg->checksum >> 8);
+
+ return MAVLINK_NUM_NON_PAYLOAD_BYTES + (uint16_t)msg->len;
+}
+
+union __mavlink_bitfield {
+ uint8_t uint8;
+ int8_t int8;
+ uint16_t uint16;
+ int16_t int16;
+ uint32_t uint32;
+ int32_t int32;
+};
+
+
+MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg)
+{
+ crc_init(&msg->checksum);
+}
+
+MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c)
+{
+ crc_accumulate(c, &msg->checksum);
+}
+
+/**
+ * This is a varient of mavlink_frame_char() but with caller supplied
+ * parsing buffers. It is useful when you want to create a MAVLink
+ * parser in a library that doesn't use any global variables
+ *
+ * @param rxmsg parsing message buffer
+ * @param status parsing starus buffer
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_frame_char(chan, byte, &msg) != MAVLINK_FRAMING_INCOMPLETE)
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg,
+ mavlink_status_t* status,
+ uint8_t c,
+ mavlink_message_t* r_message,
+ mavlink_status_t* r_mavlink_status)
+{
+ /*
+ default message crc function. You can override this per-system to
+ put this data in a different memory segment
+ */
+#if MAVLINK_CRC_EXTRA
+#ifndef MAVLINK_MESSAGE_CRC
+ static const uint8_t mavlink_message_crcs[256] = MAVLINK_MESSAGE_CRCS;
+#define MAVLINK_MESSAGE_CRC(msgid) mavlink_message_crcs[msgid]
+#endif
+#endif
+
+ /* Enable this option to check the length of each message.
+ This allows invalid messages to be caught much sooner. Use if the transmission
+ medium is prone to missing (or extra) characters (e.g. a radio that fades in
+ and out). Only use if the channel will only contain messages types listed in
+ the headers.
+ */
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+#ifndef MAVLINK_MESSAGE_LENGTH
+ static const uint8_t mavlink_message_lengths[256] = MAVLINK_MESSAGE_LENGTHS;
+#define MAVLINK_MESSAGE_LENGTH(msgid) mavlink_message_lengths[msgid]
+#endif
+#endif
+
+ int bufferIndex = 0;
+
+ status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+
+ switch (status->parse_state)
+ {
+ case MAVLINK_PARSE_STATE_UNINIT:
+ case MAVLINK_PARSE_STATE_IDLE:
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ rxmsg->magic = c;
+ mavlink_start_checksum(rxmsg);
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_STX:
+ if (status->msg_received
+/* Support shorter buffers than the
+ default maximum packet size */
+#if (MAVLINK_MAX_PAYLOAD_LEN < 255)
+ || c > MAVLINK_MAX_PAYLOAD_LEN
+#endif
+ )
+ {
+ status->buffer_overrun++;
+ status->parse_error++;
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ }
+ else
+ {
+ // NOT counting STX, LENGTH, SEQ, SYSID, COMPID, MSGID, CRC1 and CRC2
+ rxmsg->len = c;
+ status->packet_idx = 0;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_LENGTH;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_LENGTH:
+ rxmsg->seq = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SEQ;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SEQ:
+ rxmsg->sysid = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SYSID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SYSID:
+ rxmsg->compid = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_COMPID:
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+ if (rxmsg->len != MAVLINK_MESSAGE_LENGTH(c))
+ {
+ status->parse_error++;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ break;
+ }
+#endif
+ rxmsg->msgid = c;
+ mavlink_update_checksum(rxmsg, c);
+ if (rxmsg->len == 0)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ else
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID:
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx++] = (char)c;
+ mavlink_update_checksum(rxmsg, c);
+ if (status->packet_idx == rxmsg->len)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_PAYLOAD:
+#if MAVLINK_CRC_EXTRA
+ mavlink_update_checksum(rxmsg, MAVLINK_MESSAGE_CRC(rxmsg->msgid));
+#endif
+ if (c != (rxmsg->checksum & 0xFF)) {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_BAD_CRC1;
+ } else {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_CRC1;
+ }
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx] = (char)c;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_CRC1:
+ case MAVLINK_PARSE_STATE_GOT_BAD_CRC1:
+ if (status->parse_state == MAVLINK_PARSE_STATE_GOT_BAD_CRC1 || c != (rxmsg->checksum >> 8)) {
+ // got a bad CRC message
+ status->msg_received = MAVLINK_FRAMING_BAD_CRC;
+ } else {
+ // Successfully got message
+ status->msg_received = MAVLINK_FRAMING_OK;
+ }
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx+1] = (char)c;
+ memcpy(r_message, rxmsg, sizeof(mavlink_message_t));
+ break;
+ }
+
+ bufferIndex++;
+ // If a message has been sucessfully decoded, check index
+ if (status->msg_received == MAVLINK_FRAMING_OK)
+ {
+ //while(status->current_seq != rxmsg->seq)
+ //{
+ // status->packet_rx_drop_count++;
+ // status->current_seq++;
+ //}
+ status->current_rx_seq = rxmsg->seq;
+ // Initial condition: If no packet has been received so far, drop count is undefined
+ if (status->packet_rx_success_count == 0) status->packet_rx_drop_count = 0;
+ // Count this packet as received
+ status->packet_rx_success_count++;
+ }
+
+ r_message->len = rxmsg->len; // Provide visibility on how far we are into current msg
+ r_mavlink_status->parse_state = status->parse_state;
+ r_mavlink_status->packet_idx = status->packet_idx;
+ r_mavlink_status->current_rx_seq = status->current_rx_seq+1;
+ r_mavlink_status->packet_rx_success_count = status->packet_rx_success_count;
+ r_mavlink_status->packet_rx_drop_count = status->parse_error;
+ status->parse_error = 0;
+
+ if (status->msg_received == MAVLINK_FRAMING_BAD_CRC) {
+ /*
+ the CRC came out wrong. We now need to overwrite the
+ msg CRC with the one on the wire so that if the
+ caller decides to forward the message anyway that
+ mavlink_msg_to_send_buffer() won't overwrite the
+ checksum
+ */
+ r_message->checksum = _MAV_PAYLOAD(rxmsg)[status->packet_idx] | (_MAV_PAYLOAD(rxmsg)[status->packet_idx+1]<<8);
+ }
+
+ return status->msg_received;
+}
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0, 1 or
+ * 2 (MAVLINK_FRAMING_INCOMPLETE, MAVLINK_FRAMING_OK or MAVLINK_FRAMING_BAD_CRC)
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *returnMsg and the channel's status is
+ * copied into *returnStats.
+ *
+ * @param chan ID of the current channel. This allows to parse different channels with this function.
+ * a channel is not a physical message channel like a serial port, but a logic partition of
+ * the communication streams in this case. COMM_NB is the limit for the number of channels
+ * on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_frame_char(chan, byte, &msg) != MAVLINK_FRAMING_INCOMPLETE)
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+ return mavlink_frame_char_buffer(mavlink_get_channel_buffer(chan),
+ mavlink_get_channel_status(chan),
+ c,
+ r_message,
+ r_mavlink_status);
+}
+
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0 or 1.
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *returnMsg and the channel's status is
+ * copied into *returnStats.
+ *
+ * @param chan ID of the current channel. This allows to parse different channels with this function.
+ * a channel is not a physical message channel like a serial port, but a logic partition of
+ * the communication streams in this case. COMM_NB is the limit for the number of channels
+ * on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded or bad CRC, 1 on good message and CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_parse_char(chan, byte, &msg))
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+ uint8_t msg_received = mavlink_frame_char(chan, c, r_message, r_mavlink_status);
+ if (msg_received == MAVLINK_FRAMING_BAD_CRC) {
+ // we got a bad CRC. Treat as a parse failure
+ mavlink_message_t* rxmsg = mavlink_get_channel_buffer(chan);
+ mavlink_status_t* status = mavlink_get_channel_status(chan);
+ status->parse_error++;
+ status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ mavlink_start_checksum(rxmsg);
+ }
+ return 0;
+ }
+ return msg_received;
+}
+
+/**
+ * @brief Put a bitfield of length 1-32 bit into the buffer
+ *
+ * @param b the value to add, will be encoded in the bitfield
+ * @param bits number of bits to use to encode b, e.g. 1 for boolean, 2, 3, etc.
+ * @param packet_index the position in the packet (the index of the first byte to use)
+ * @param bit_index the position in the byte (the index of the first bit to use)
+ * @param buffer packet buffer to write into
+ * @return new position of the last used byte in the buffer
+ */
+MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index, uint8_t* r_bit_index, uint8_t* buffer)
+{
+ uint16_t bits_remain = bits;
+ // Transform number into network order
+ int32_t v;
+ uint8_t i_bit_index, i_byte_index, curr_bits_n;
+#if MAVLINK_NEED_BYTE_SWAP
+ union {
+ int32_t i;
+ uint8_t b[4];
+ } bin, bout;
+ bin.i = b;
+ bout.b[0] = bin.b[3];
+ bout.b[1] = bin.b[2];
+ bout.b[2] = bin.b[1];
+ bout.b[3] = bin.b[0];
+ v = bout.i;
+#else
+ v = b;
+#endif
+
+ // buffer in
+ // 01100000 01000000 00000000 11110001
+ // buffer out
+ // 11110001 00000000 01000000 01100000
+
+ // Existing partly filled byte (four free slots)
+ // 0111xxxx
+
+ // Mask n free bits
+ // 00001111 = 2^0 + 2^1 + 2^2 + 2^3 = 2^n - 1
+ // = ((uint32_t)(1 << n)) - 1; // = 2^n - 1
+
+ // Shift n bits into the right position
+ // out = in >> n;
+
+ // Mask and shift bytes
+ i_bit_index = bit_index;
+ i_byte_index = packet_index;
+ if (bit_index > 0)
+ {
+ // If bits were available at start, they were available
+ // in the byte before the current index
+ i_byte_index--;
+ }
+
+ // While bits have not been packed yet
+ while (bits_remain > 0)
+ {
+ // Bits still have to be packed
+ // there can be more than 8 bits, so
+ // we might have to pack them into more than one byte
+
+ // First pack everything we can into the current 'open' byte
+ //curr_bits_n = bits_remain << 3; // Equals bits_remain mod 8
+ //FIXME
+ if (bits_remain <= (uint8_t)(8 - i_bit_index))
+ {
+ // Enough space
+ curr_bits_n = (uint8_t)bits_remain;
+ }
+ else
+ {
+ curr_bits_n = (8 - i_bit_index);
+ }
+
+ // Pack these n bits into the current byte
+ // Mask out whatever was at that position with ones (xxx11111)
+ buffer[i_byte_index] &= (0xFF >> (8 - curr_bits_n));
+ // Put content to this position, by masking out the non-used part
+ buffer[i_byte_index] |= ((0x00 << curr_bits_n) & v);
+
+ // Increment the bit index
+ i_bit_index += curr_bits_n;
+
+ // Now proceed to the next byte, if necessary
+ bits_remain -= curr_bits_n;
+ if (bits_remain > 0)
+ {
+ // Offer another 8 bits / one byte
+ i_byte_index++;
+ i_bit_index = 0;
+ }
+ }
+
+ *r_bit_index = i_bit_index;
+ // If a partly filled byte is present, mark this as consumed
+ if (i_bit_index != 7) i_byte_index++;
+ return i_byte_index - packet_index;
+}
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+// To make MAVLink work on your MCU, define comm_send_ch() if you wish
+// to send 1 byte at a time, or MAVLINK_SEND_UART_BYTES() to send a
+// whole packet at a time
+
+/*
+
+#include "mavlink_types.h"
+
+void comm_send_ch(mavlink_channel_t chan, uint8_t ch)
+{
+ if (chan == MAVLINK_COMM_0)
+ {
+ uart0_transmit(ch);
+ }
+ if (chan == MAVLINK_COMM_1)
+ {
+ uart1_transmit(ch);
+ }
+}
+ */
+
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len)
+{
+#ifdef MAVLINK_SEND_UART_BYTES
+ /* this is the more efficient approach, if the platform
+ defines it */
+ MAVLINK_SEND_UART_BYTES(chan, (const uint8_t *)buf, len);
+#else
+ /* fallback to one byte at a time */
+ uint16_t i;
+ for (i = 0; i < len; i++) {
+ comm_send_ch(chan, (uint8_t)buf[i]);
+ }
+#endif
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+#endif /* _MAVLINK_HELPERS_H_ */
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_types.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_types.h
new file mode 100644
index 000000000..0a98ccc08
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/mavlink_types.h
@@ -0,0 +1,228 @@
+#ifndef MAVLINK_TYPES_H_
+#define MAVLINK_TYPES_H_
+
+// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
+#if (defined _MSC_VER) && (_MSC_VER < 1600)
+#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
+#endif
+
+#include
+
+// Macro to define packed structures
+#ifdef __GNUC__
+ #define MAVPACKED( __Declaration__ ) __Declaration__ __attribute__((packed))
+#else
+ #define MAVPACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )
+#endif
+
+#ifndef MAVLINK_MAX_PAYLOAD_LEN
+// it is possible to override this, but be careful!
+#define MAVLINK_MAX_PAYLOAD_LEN 255 ///< Maximum payload length
+#endif
+
+#define MAVLINK_CORE_HEADER_LEN 5 ///< Length of core header (of the comm. layer): message length (1 byte) + message sequence (1 byte) + message system id (1 byte) + message component id (1 byte) + message type id (1 byte)
+#define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1) ///< Length of all header bytes, including core and checksum
+#define MAVLINK_NUM_CHECKSUM_BYTES 2
+#define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
+
+#define MAVLINK_MAX_PACKET_LEN (MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES) ///< Maximum packet length
+
+#define MAVLINK_MSG_ID_EXTENDED_MESSAGE 255
+#define MAVLINK_EXTENDED_HEADER_LEN 14
+
+#if (defined _MSC_VER) || ((defined __APPLE__) && (defined __MACH__)) || (defined __linux__)
+ /* full fledged 32bit++ OS */
+ #define MAVLINK_MAX_EXTENDED_PACKET_LEN 65507
+#else
+ /* small microcontrollers */
+ #define MAVLINK_MAX_EXTENDED_PACKET_LEN 2048
+#endif
+
+#define MAVLINK_MAX_EXTENDED_PAYLOAD_LEN (MAVLINK_MAX_EXTENDED_PACKET_LEN - MAVLINK_EXTENDED_HEADER_LEN - MAVLINK_NUM_NON_PAYLOAD_BYTES)
+
+
+/**
+ * Old-style 4 byte param union
+ *
+ * This struct is the data format to be used when sending
+ * parameters. The parameter should be copied to the native
+ * type (without type conversion)
+ * and re-instanted on the receiving side using the
+ * native type as well.
+ */
+MAVPACKED(
+typedef struct param_union {
+ union {
+ float param_float;
+ int32_t param_int32;
+ uint32_t param_uint32;
+ int16_t param_int16;
+ uint16_t param_uint16;
+ int8_t param_int8;
+ uint8_t param_uint8;
+ uint8_t bytes[4];
+ };
+ uint8_t type;
+}) mavlink_param_union_t;
+
+
+/**
+ * New-style 8 byte param union
+ * mavlink_param_union_double_t will be 8 bytes long, and treated as needing 8 byte alignment for the purposes of MAVLink 1.0 field ordering.
+ * The mavlink_param_union_double_t will be treated as a little-endian structure.
+ *
+ * If is_double is 1 then the type is a double, and the remaining 63 bits are the double, with the lowest bit of the mantissa zero.
+ * The intention is that by replacing the is_double bit with 0 the type can be directly used as a double (as the is_double bit corresponds to the
+ * lowest mantissa bit of a double). If is_double is 0 then mavlink_type gives the type in the union.
+ * The mavlink_types.h header will also need to have shifts/masks to define the bit boundaries in the above,
+ * as bitfield ordering isn’t consistent between platforms. The above is intended to be for gcc on x86,
+ * which should be the same as gcc on little-endian arm. When using shifts/masks the value will be treated as a 64 bit unsigned number,
+ * and the bits pulled out using the shifts/masks.
+*/
+MAVPACKED(
+typedef struct param_union_extended {
+ union {
+ struct {
+ uint8_t is_double:1;
+ uint8_t mavlink_type:7;
+ union {
+ char c;
+ uint8_t uint8;
+ int8_t int8;
+ uint16_t uint16;
+ int16_t int16;
+ uint32_t uint32;
+ int32_t int32;
+ float f;
+ uint8_t align[7];
+ };
+ };
+ uint8_t data[8];
+ };
+}) mavlink_param_union_double_t;
+
+/**
+ * This structure is required to make the mavlink_send_xxx convenience functions
+ * work, as it tells the library what the current system and component ID are.
+ */
+MAVPACKED(
+typedef struct __mavlink_system {
+ uint8_t sysid; ///< Used by the MAVLink message_xx_send() convenience function
+ uint8_t compid; ///< Used by the MAVLink message_xx_send() convenience function
+}) mavlink_system_t;
+
+MAVPACKED(
+typedef struct __mavlink_message {
+ uint16_t checksum; ///< sent at end of packet
+ uint8_t magic; ///< protocol magic marker
+ uint8_t len; ///< Length of payload
+ uint8_t seq; ///< Sequence of packet
+ uint8_t sysid; ///< ID of message sender system/aircraft
+ uint8_t compid; ///< ID of the message sender component
+ uint8_t msgid; ///< ID of message in payload
+ uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8];
+}) mavlink_message_t;
+
+MAVPACKED(
+typedef struct __mavlink_extended_message {
+ mavlink_message_t base_msg;
+ int32_t extended_payload_len; ///< Length of extended payload if any
+ uint8_t extended_payload[MAVLINK_MAX_EXTENDED_PAYLOAD_LEN];
+}) mavlink_extended_message_t;
+
+typedef enum {
+ MAVLINK_TYPE_CHAR = 0,
+ MAVLINK_TYPE_UINT8_T = 1,
+ MAVLINK_TYPE_INT8_T = 2,
+ MAVLINK_TYPE_UINT16_T = 3,
+ MAVLINK_TYPE_INT16_T = 4,
+ MAVLINK_TYPE_UINT32_T = 5,
+ MAVLINK_TYPE_INT32_T = 6,
+ MAVLINK_TYPE_UINT64_T = 7,
+ MAVLINK_TYPE_INT64_T = 8,
+ MAVLINK_TYPE_FLOAT = 9,
+ MAVLINK_TYPE_DOUBLE = 10
+} mavlink_message_type_t;
+
+#define MAVLINK_MAX_FIELDS 64
+
+typedef struct __mavlink_field_info {
+ const char *name; // name of this field
+ const char *print_format; // printing format hint, or NULL
+ mavlink_message_type_t type; // type of this field
+ unsigned int array_length; // if non-zero, field is an array
+ unsigned int wire_offset; // offset of each field in the payload
+ unsigned int structure_offset; // offset in a C structure
+} mavlink_field_info_t;
+
+// note that in this structure the order of fields is the order
+// in the XML file, not necessary the wire order
+typedef struct __mavlink_message_info {
+ const char *name; // name of the message
+ unsigned num_fields; // how many fields in this message
+ mavlink_field_info_t fields[MAVLINK_MAX_FIELDS]; // field information
+} mavlink_message_info_t;
+
+#define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0])))
+#define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
+
+// checksum is immediately after the payload bytes
+#define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+#define mavlink_ck_b(msg) *(((msg)->len+(uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+
+typedef enum {
+ MAVLINK_COMM_0,
+ MAVLINK_COMM_1,
+ MAVLINK_COMM_2,
+ MAVLINK_COMM_3
+} mavlink_channel_t;
+
+/*
+ * applications can set MAVLINK_COMM_NUM_BUFFERS to the maximum number
+ * of buffers they will use. If more are used, then the result will be
+ * a stack overrun
+ */
+#ifndef MAVLINK_COMM_NUM_BUFFERS
+#if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32)
+# define MAVLINK_COMM_NUM_BUFFERS 16
+#else
+# define MAVLINK_COMM_NUM_BUFFERS 4
+#endif
+#endif
+
+typedef enum {
+ MAVLINK_PARSE_STATE_UNINIT=0,
+ MAVLINK_PARSE_STATE_IDLE,
+ MAVLINK_PARSE_STATE_GOT_STX,
+ MAVLINK_PARSE_STATE_GOT_SEQ,
+ MAVLINK_PARSE_STATE_GOT_LENGTH,
+ MAVLINK_PARSE_STATE_GOT_SYSID,
+ MAVLINK_PARSE_STATE_GOT_COMPID,
+ MAVLINK_PARSE_STATE_GOT_MSGID,
+ MAVLINK_PARSE_STATE_GOT_PAYLOAD,
+ MAVLINK_PARSE_STATE_GOT_CRC1,
+ MAVLINK_PARSE_STATE_GOT_BAD_CRC1
+} mavlink_parse_state_t; ///< The state machine for the comm parser
+
+typedef enum {
+ MAVLINK_FRAMING_INCOMPLETE=0,
+ MAVLINK_FRAMING_OK=1,
+ MAVLINK_FRAMING_BAD_CRC=2
+} mavlink_framing_t;
+
+typedef struct __mavlink_status {
+ uint8_t msg_received; ///< Number of received messages
+ uint8_t buffer_overrun; ///< Number of buffer overruns
+ uint8_t parse_error; ///< Number of parse errors
+ mavlink_parse_state_t parse_state; ///< Parsing state machine
+ uint8_t packet_idx; ///< Index in current packet
+ uint8_t current_rx_seq; ///< Sequence number of last packet received
+ uint8_t current_tx_seq; ///< Sequence number of last packet sent
+ uint16_t packet_rx_success_count; ///< Received packets
+ uint16_t packet_rx_drop_count; ///< Number of packet drops
+} mavlink_status_t;
+
+#define MAVLINK_BIG_ENDIAN 0
+#define MAVLINK_LITTLE_ENDIAN 1
+
+#endif /* MAVLINK_TYPES_H_ */
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/protocol.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/protocol.h
new file mode 100644
index 000000000..731bd3a58
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v1.0/protocol.h
@@ -0,0 +1,339 @@
+#ifndef _MAVLINK_PROTOCOL_H_
+#define _MAVLINK_PROTOCOL_H_
+
+#include "string.h"
+#include "mavlink_types.h"
+
+/*
+ If you want MAVLink on a system that is native big-endian,
+ you need to define NATIVE_BIG_ENDIAN
+*/
+#ifdef NATIVE_BIG_ENDIAN
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN == MAVLINK_LITTLE_ENDIAN)
+#else
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN != MAVLINK_LITTLE_ENDIAN)
+#endif
+
+#ifndef MAVLINK_STACK_BUFFER
+#define MAVLINK_STACK_BUFFER 0
+#endif
+
+#ifndef MAVLINK_AVOID_GCC_STACK_BUG
+# define MAVLINK_AVOID_GCC_STACK_BUG defined(__GNUC__)
+#endif
+
+#ifndef MAVLINK_ASSERT
+#define MAVLINK_ASSERT(x)
+#endif
+
+#ifndef MAVLINK_START_UART_SEND
+#define MAVLINK_START_UART_SEND(chan, length)
+#endif
+
+#ifndef MAVLINK_END_UART_SEND
+#define MAVLINK_END_UART_SEND(chan, length)
+#endif
+
+/* option to provide alternative implementation of mavlink_helpers.h */
+#ifdef MAVLINK_SEPARATE_HELPERS
+
+ #define MAVLINK_HELPER
+
+ /* decls in sync with those in mavlink_helpers.h */
+ #ifndef MAVLINK_GET_CHANNEL_STATUS
+ MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan);
+ #endif
+ MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan);
+ #if MAVLINK_CRC_EXTRA
+ MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+ MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ #endif
+ #else
+ MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t length);
+ MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t length);
+ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+ MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint8_t msgid, const char *packet, uint8_t length);
+ #endif
+ #endif // MAVLINK_CRC_EXTRA
+ MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buffer, const mavlink_message_t *msg);
+ MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg);
+ MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c);
+ MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg,
+ mavlink_status_t* status,
+ uint8_t c,
+ mavlink_message_t* r_message,
+ mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index,
+ uint8_t* r_bit_index, uint8_t* buffer);
+ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+ MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+ MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg);
+ #endif
+
+#else
+
+ #define MAVLINK_HELPER static inline
+ #include "mavlink_helpers.h"
+
+#endif // MAVLINK_SEPARATE_HELPERS
+
+/**
+ * @brief Get the required buffer size for this message
+ */
+static inline uint16_t mavlink_msg_get_send_buffer_length(const mavlink_message_t* msg)
+{
+ return msg->len + MAVLINK_NUM_NON_PAYLOAD_BYTES;
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+static inline void byte_swap_2(char *dst, const char *src)
+{
+ dst[0] = src[1];
+ dst[1] = src[0];
+}
+static inline void byte_swap_4(char *dst, const char *src)
+{
+ dst[0] = src[3];
+ dst[1] = src[2];
+ dst[2] = src[1];
+ dst[3] = src[0];
+}
+static inline void byte_swap_8(char *dst, const char *src)
+{
+ dst[0] = src[7];
+ dst[1] = src[6];
+ dst[2] = src[5];
+ dst[3] = src[4];
+ dst[4] = src[3];
+ dst[5] = src[2];
+ dst[6] = src[1];
+ dst[7] = src[0];
+}
+#elif !MAVLINK_ALIGNED_FIELDS
+static inline void byte_copy_2(char *dst, const char *src)
+{
+ dst[0] = src[0];
+ dst[1] = src[1];
+}
+static inline void byte_copy_4(char *dst, const char *src)
+{
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = src[3];
+}
+static inline void byte_copy_8(char *dst, const char *src)
+{
+ memcpy(dst, src, 8);
+}
+#endif
+
+#define _mav_put_uint8_t(buf, wire_offset, b) buf[wire_offset] = (uint8_t)b
+#define _mav_put_int8_t(buf, wire_offset, b) buf[wire_offset] = (int8_t)b
+#define _mav_put_char(buf, wire_offset, b) buf[wire_offset] = b
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b) byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#elif !MAVLINK_ALIGNED_FIELDS
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b) byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#else
+#define _mav_put_uint16_t(buf, wire_offset, b) *(uint16_t *)&buf[wire_offset] = b
+#define _mav_put_int16_t(buf, wire_offset, b) *(int16_t *)&buf[wire_offset] = b
+#define _mav_put_uint32_t(buf, wire_offset, b) *(uint32_t *)&buf[wire_offset] = b
+#define _mav_put_int32_t(buf, wire_offset, b) *(int32_t *)&buf[wire_offset] = b
+#define _mav_put_uint64_t(buf, wire_offset, b) *(uint64_t *)&buf[wire_offset] = b
+#define _mav_put_int64_t(buf, wire_offset, b) *(int64_t *)&buf[wire_offset] = b
+#define _mav_put_float(buf, wire_offset, b) *(float *)&buf[wire_offset] = b
+#define _mav_put_double(buf, wire_offset, b) *(double *)&buf[wire_offset] = b
+#endif
+
+/*
+ like memcpy(), but if src is NULL, do a memset to zero
+*/
+static inline void mav_array_memcpy(void *dest, const void *src, size_t n)
+{
+ if (src == NULL) {
+ memset(dest, 0, n);
+ } else {
+ memcpy(dest, src, n);
+ }
+}
+
+/*
+ * Place a char array into a buffer
+ */
+static inline void _mav_put_char_array(char *buf, uint8_t wire_offset, const char *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a uint8_t array into a buffer
+ */
+static inline void _mav_put_uint8_t_array(char *buf, uint8_t wire_offset, const uint8_t *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a int8_t array into a buffer
+ */
+static inline void _mav_put_int8_t_array(char *buf, uint8_t wire_offset, const int8_t *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _MAV_PUT_ARRAY(TYPE, V) \
+static inline void _mav_put_ ## TYPE ##_array(char *buf, uint8_t wire_offset, const TYPE *b, uint8_t array_length) \
+{ \
+ if (b == NULL) { \
+ memset(&buf[wire_offset], 0, array_length*sizeof(TYPE)); \
+ } else { \
+ uint16_t i; \
+ for (i=0; i
+
+/**
+ *
+ * CALCULATE THE CHECKSUM
+ *
+ */
+
+#define X25_INIT_CRC 0xffff
+#define X25_VALIDATE_CRC 0xf0b8
+
+#ifndef HAVE_CRC_ACCUMULATE
+/**
+ * @brief Accumulate the X.25 CRC by adding one char at a time.
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new char to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum)
+{
+ /*Accumulate one byte of data into the CRC*/
+ uint8_t tmp;
+
+ tmp = data ^ (uint8_t)(*crcAccum &0xff);
+ tmp ^= (tmp<<4);
+ *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
+}
+#endif
+
+
+/**
+ * @brief Initiliaze the buffer for the X.25 CRC
+ *
+ * @param crcAccum the 16 bit X.25 CRC
+ */
+static inline void crc_init(uint16_t* crcAccum)
+{
+ *crcAccum = X25_INIT_CRC;
+}
+
+
+/**
+ * @brief Calculates the X.25 checksum on a byte buffer
+ *
+ * @param pBuffer buffer containing the byte array to hash
+ * @param length length of the byte array
+ * @return the checksum over the buffer bytes
+ **/
+static inline uint16_t crc_calculate(const uint8_t* pBuffer, uint16_t length)
+{
+ uint16_t crcTmp;
+ crc_init(&crcTmp);
+ while (length--) {
+ crc_accumulate(*pBuffer++, &crcTmp);
+ }
+ return crcTmp;
+}
+
+
+/**
+ * @brief Accumulate the X.25 CRC by adding an array of bytes
+ *
+ * The checksum function adds the hash of one char at a time to the
+ * 16 bit checksum (uint16_t).
+ *
+ * @param data new bytes to hash
+ * @param crcAccum the already accumulated checksum
+ **/
+static inline void crc_accumulate_buffer(uint16_t *crcAccum, const char *pBuffer, uint16_t length)
+{
+ const uint8_t *p = (const uint8_t *)pBuffer;
+ while (length--) {
+ crc_accumulate(*p++, crcAccum);
+ }
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_conversions.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_conversions.h
new file mode 100644
index 000000000..740b35c31
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_conversions.h
@@ -0,0 +1,209 @@
+#pragma once
+
+/* enable math defines on Windows */
+#ifdef _MSC_VER
+#ifndef _USE_MATH_DEFINES
+#define _USE_MATH_DEFINES
+#endif
+#endif
+#include
+
+#ifndef M_PI_2
+ #define M_PI_2 ((float)asin(1))
+#endif
+
+/**
+ * @file mavlink_conversions.h
+ *
+ * These conversion functions follow the NASA rotation standards definition file
+ * available online.
+ *
+ * Their intent is to lower the barrier for MAVLink adopters to use gimbal-lock free
+ * (both rotation matrices, sometimes called DCM, and quaternions are gimbal-lock free)
+ * rotation representations. Euler angles (roll, pitch, yaw) will be phased out of the
+ * protocol as widely as possible.
+ *
+ * @author James Goppert
+ * @author Thomas Gubler
+ */
+
+
+/**
+ * Converts a quaternion to a rotation matrix
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_dcm(const float quaternion[4], float dcm[3][3])
+{
+ double a = quaternion[0];
+ double b = quaternion[1];
+ double c = quaternion[2];
+ double d = quaternion[3];
+ double aSq = a * a;
+ double bSq = b * b;
+ double cSq = c * c;
+ double dSq = d * d;
+ dcm[0][0] = aSq + bSq - cSq - dSq;
+ dcm[0][1] = 2 * (b * c - a * d);
+ dcm[0][2] = 2 * (a * c + b * d);
+ dcm[1][0] = 2 * (b * c + a * d);
+ dcm[1][1] = aSq - bSq + cSq - dSq;
+ dcm[1][2] = 2 * (c * d - a * b);
+ dcm[2][0] = 2 * (b * d - a * c);
+ dcm[2][1] = 2 * (a * b + c * d);
+ dcm[2][2] = aSq - bSq - cSq + dSq;
+}
+
+
+/**
+ * Converts a rotation matrix to euler angles
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_dcm_to_euler(const float dcm[3][3], float* roll, float* pitch, float* yaw)
+{
+ float phi, theta, psi;
+ theta = asin(-dcm[2][0]);
+
+ if (fabsf(theta - (float)M_PI_2) < 1.0e-3f) {
+ phi = 0.0f;
+ psi = (atan2f(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1]) + phi);
+
+ } else if (fabsf(theta + (float)M_PI_2) < 1.0e-3f) {
+ phi = 0.0f;
+ psi = atan2f(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1] - phi);
+
+ } else {
+ phi = atan2f(dcm[2][1], dcm[2][2]);
+ psi = atan2f(dcm[1][0], dcm[0][0]);
+ }
+
+ *roll = phi;
+ *pitch = theta;
+ *yaw = psi;
+}
+
+
+/**
+ * Converts a quaternion to euler angles
+ *
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ */
+MAVLINK_HELPER void mavlink_quaternion_to_euler(const float quaternion[4], float* roll, float* pitch, float* yaw)
+{
+ float dcm[3][3];
+ mavlink_quaternion_to_dcm(quaternion, dcm);
+ mavlink_dcm_to_euler((const float(*)[3])dcm, roll, pitch, yaw);
+}
+
+
+/**
+ * Converts euler angles to a quaternion
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_euler_to_quaternion(float roll, float pitch, float yaw, float quaternion[4])
+{
+ float cosPhi_2 = cosf(roll / 2);
+ float sinPhi_2 = sinf(roll / 2);
+ float cosTheta_2 = cosf(pitch / 2);
+ float sinTheta_2 = sinf(pitch / 2);
+ float cosPsi_2 = cosf(yaw / 2);
+ float sinPsi_2 = sinf(yaw / 2);
+ quaternion[0] = (cosPhi_2 * cosTheta_2 * cosPsi_2 +
+ sinPhi_2 * sinTheta_2 * sinPsi_2);
+ quaternion[1] = (sinPhi_2 * cosTheta_2 * cosPsi_2 -
+ cosPhi_2 * sinTheta_2 * sinPsi_2);
+ quaternion[2] = (cosPhi_2 * sinTheta_2 * cosPsi_2 +
+ sinPhi_2 * cosTheta_2 * sinPsi_2);
+ quaternion[3] = (cosPhi_2 * cosTheta_2 * sinPsi_2 -
+ sinPhi_2 * sinTheta_2 * cosPsi_2);
+}
+
+
+/**
+ * Converts a rotation matrix to a quaternion
+ * Reference:
+ * - Shoemake, Quaternions,
+ * http://www.cs.ucr.edu/~vbz/resources/quatut.pdf
+ *
+ * @param dcm a 3x3 rotation matrix
+ * @param quaternion a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
+ */
+MAVLINK_HELPER void mavlink_dcm_to_quaternion(const float dcm[3][3], float quaternion[4])
+{
+ float tr = dcm[0][0] + dcm[1][1] + dcm[2][2];
+ if (tr > 0.0f) {
+ float s = sqrtf(tr + 1.0f);
+ quaternion[0] = s * 0.5f;
+ s = 0.5f / s;
+ quaternion[1] = (dcm[2][1] - dcm[1][2]) * s;
+ quaternion[2] = (dcm[0][2] - dcm[2][0]) * s;
+ quaternion[3] = (dcm[1][0] - dcm[0][1]) * s;
+ } else {
+ /* Find maximum diagonal element in dcm
+ * store index in dcm_i */
+ int dcm_i = 0;
+ int i;
+ for (i = 1; i < 3; i++) {
+ if (dcm[i][i] > dcm[dcm_i][dcm_i]) {
+ dcm_i = i;
+ }
+ }
+
+ int dcm_j = (dcm_i + 1) % 3;
+ int dcm_k = (dcm_i + 2) % 3;
+
+ float s = sqrtf((dcm[dcm_i][dcm_i] - dcm[dcm_j][dcm_j] -
+ dcm[dcm_k][dcm_k]) + 1.0f);
+ quaternion[dcm_i + 1] = s * 0.5f;
+ s = 0.5f / s;
+ quaternion[dcm_j + 1] = (dcm[dcm_i][dcm_j] + dcm[dcm_j][dcm_i]) * s;
+ quaternion[dcm_k + 1] = (dcm[dcm_k][dcm_i] + dcm[dcm_i][dcm_k]) * s;
+ quaternion[0] = (dcm[dcm_k][dcm_j] - dcm[dcm_j][dcm_k]) * s;
+ }
+}
+
+
+/**
+ * Converts euler angles to a rotation matrix
+ *
+ * @param roll the roll angle in radians
+ * @param pitch the pitch angle in radians
+ * @param yaw the yaw angle in radians
+ * @param dcm a 3x3 rotation matrix
+ */
+MAVLINK_HELPER void mavlink_euler_to_dcm(float roll, float pitch, float yaw, float dcm[3][3])
+{
+ float cosPhi = cosf(roll);
+ float sinPhi = sinf(roll);
+ float cosThe = cosf(pitch);
+ float sinThe = sinf(pitch);
+ float cosPsi = cosf(yaw);
+ float sinPsi = sinf(yaw);
+
+ dcm[0][0] = cosThe * cosPsi;
+ dcm[0][1] = -cosPhi * sinPsi + sinPhi * sinThe * cosPsi;
+ dcm[0][2] = sinPhi * sinPsi + cosPhi * sinThe * cosPsi;
+
+ dcm[1][0] = cosThe * sinPsi;
+ dcm[1][1] = cosPhi * cosPsi + sinPhi * sinThe * sinPsi;
+ dcm[1][2] = -sinPhi * cosPsi + cosPhi * sinThe * sinPsi;
+
+ dcm[2][0] = -sinThe;
+ dcm[2][1] = sinPhi * cosThe;
+ dcm[2][2] = cosPhi * cosThe;
+}
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_get_info.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_get_info.h
new file mode 100644
index 000000000..b07e13014
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_get_info.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#ifdef MAVLINK_USE_MESSAGE_INFO
+#define MAVLINK_HAVE_GET_MESSAGE_INFO
+/*
+ return the message_info struct for a message
+*/
+MAVLINK_HELPER const mavlink_message_info_t *mavlink_get_message_info(const mavlink_message_t *msg)
+{
+ static const mavlink_message_info_t mavlink_message_info[] = MAVLINK_MESSAGE_INFO;
+ /*
+ use a bisection search to find the right entry. A perfect hash may be better
+ Note that this assumes the table is sorted with primary key msgid
+ */
+ uint32_t msgid = msg->msgid;
+ uint32_t low=0, high=sizeof(mavlink_message_info)/sizeof(mavlink_message_info[0]);
+ while (low < high) {
+ uint32_t mid = (low+1+high)/2;
+ if (msgid < mavlink_message_info[mid].msgid) {
+ high = mid-1;
+ continue;
+ }
+ if (msgid > mavlink_message_info[mid].msgid) {
+ low = mid;
+ continue;
+ }
+ low = mid;
+ break;
+ }
+ if (mavlink_message_info[low].msgid == msgid) {
+ return &mavlink_message_info[low];
+ }
+ return NULL;
+}
+#endif // MAVLINK_USE_MESSAGE_INFO
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_helpers.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_helpers.h
new file mode 100644
index 000000000..5c9babed5
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_helpers.h
@@ -0,0 +1,1098 @@
+#pragma once
+
+#include "string.h"
+#include "checksum.h"
+#include "mavlink_types.h"
+#include "mavlink_conversions.h"
+#include
+
+#ifndef MAVLINK_HELPER
+#define MAVLINK_HELPER
+#endif
+
+#include "mavlink_sha256.h"
+
+/*
+ * Internal function to give access to the channel status for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_STATUS
+MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan)
+{
+#ifdef MAVLINK_EXTERNAL_RX_STATUS
+ // No m_mavlink_status array defined in function,
+ // has to be defined externally
+#else
+ static mavlink_status_t m_mavlink_status[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+ return &m_mavlink_status[chan];
+}
+#endif
+
+/*
+ * Internal function to give access to the channel buffer for each channel
+ */
+#ifndef MAVLINK_GET_CHANNEL_BUFFER
+MAVLINK_HELPER mavlink_message_t* mavlink_get_channel_buffer(uint8_t chan)
+{
+
+#ifdef MAVLINK_EXTERNAL_RX_BUFFER
+ // No m_mavlink_buffer array defined in function,
+ // has to be defined externally
+#else
+ static mavlink_message_t m_mavlink_buffer[MAVLINK_COMM_NUM_BUFFERS];
+#endif
+ return &m_mavlink_buffer[chan];
+}
+#endif // MAVLINK_GET_CHANNEL_BUFFER
+
+/**
+ * @brief Reset the status of a channel.
+ */
+MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan)
+{
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+}
+
+/**
+ * @brief create a signature block for a packet
+ */
+MAVLINK_HELPER uint8_t mavlink_sign_packet(mavlink_signing_t *signing,
+ uint8_t signature[MAVLINK_SIGNATURE_BLOCK_LEN],
+ const uint8_t *header, uint8_t header_len,
+ const uint8_t *packet, uint8_t packet_len,
+ const uint8_t crc[2])
+{
+ mavlink_sha256_ctx ctx;
+ union {
+ uint64_t t64;
+ uint8_t t8[8];
+ } tstamp;
+ if (signing == NULL || !(signing->flags & MAVLINK_SIGNING_FLAG_SIGN_OUTGOING)) {
+ return 0;
+ }
+ signature[0] = signing->link_id;
+ tstamp.t64 = signing->timestamp;
+ memcpy(&signature[1], tstamp.t8, 6);
+ signing->timestamp++;
+
+ mavlink_sha256_init(&ctx);
+ mavlink_sha256_update(&ctx, signing->secret_key, sizeof(signing->secret_key));
+ mavlink_sha256_update(&ctx, header, header_len);
+ mavlink_sha256_update(&ctx, packet, packet_len);
+ mavlink_sha256_update(&ctx, crc, 2);
+ mavlink_sha256_update(&ctx, signature, 7);
+ mavlink_sha256_final_48(&ctx, &signature[7]);
+
+ return MAVLINK_SIGNATURE_BLOCK_LEN;
+}
+
+/**
+ * return new packet length for trimming payload of any trailing zero
+ * bytes. Used in MAVLink2 to give simple support for variable length
+ * arrays.
+ */
+MAVLINK_HELPER uint8_t _mav_trim_payload(const char *payload, uint8_t length)
+{
+ while (length > 1 && payload[length-1] == 0) {
+ length--;
+ }
+ return length;
+}
+
+/**
+ * @brief check a signature block for a packet
+ */
+MAVLINK_HELPER bool mavlink_signature_check(mavlink_signing_t *signing,
+ mavlink_signing_streams_t *signing_streams,
+ const mavlink_message_t *msg)
+{
+ if (signing == NULL) {
+ return true;
+ }
+ const uint8_t *p = (const uint8_t *)&msg->magic;
+ const uint8_t *psig = msg->signature;
+ const uint8_t *incoming_signature = psig+7;
+ mavlink_sha256_ctx ctx;
+ uint8_t signature[6];
+ uint16_t i;
+
+ mavlink_sha256_init(&ctx);
+ mavlink_sha256_update(&ctx, signing->secret_key, sizeof(signing->secret_key));
+ mavlink_sha256_update(&ctx, p, MAVLINK_CORE_HEADER_LEN+1+msg->len);
+ mavlink_sha256_update(&ctx, msg->ck, 2);
+ mavlink_sha256_update(&ctx, psig, 1+6);
+ mavlink_sha256_final_48(&ctx, signature);
+ if (memcmp(signature, incoming_signature, 6) != 0) {
+ return false;
+ }
+
+ // now check timestamp
+ union tstamp {
+ uint64_t t64;
+ uint8_t t8[8];
+ } tstamp;
+ uint8_t link_id = psig[0];
+ tstamp.t64 = 0;
+ memcpy(tstamp.t8, psig+1, 6);
+
+ if (signing_streams == NULL) {
+ return false;
+ }
+
+ // find stream
+ for (i=0; inum_signing_streams; i++) {
+ if (msg->sysid == signing_streams->stream[i].sysid &&
+ msg->compid == signing_streams->stream[i].compid &&
+ link_id == signing_streams->stream[i].link_id) {
+ break;
+ }
+ }
+ if (i == signing_streams->num_signing_streams) {
+ if (signing_streams->num_signing_streams >= MAVLINK_MAX_SIGNING_STREAMS) {
+ // over max number of streams
+ return false;
+ }
+ // new stream. Only accept if timestamp is not more than 1 minute old
+ if (tstamp.t64 + 6000*1000UL < signing->timestamp) {
+ return false;
+ }
+ // add new stream
+ signing_streams->stream[i].sysid = msg->sysid;
+ signing_streams->stream[i].compid = msg->compid;
+ signing_streams->stream[i].link_id = link_id;
+ signing_streams->num_signing_streams++;
+ } else {
+ union tstamp last_tstamp;
+ last_tstamp.t64 = 0;
+ memcpy(last_tstamp.t8, signing_streams->stream[i].timestamp_bytes, 6);
+ if (tstamp.t64 <= last_tstamp.t64) {
+ // repeating old timestamp
+ return false;
+ }
+ }
+
+ // remember last timestamp
+ memcpy(signing_streams->stream[i].timestamp_bytes, psig+1, 6);
+
+ // our next timestamp must be at least this timestamp
+ if (tstamp.t64 > signing->timestamp) {
+ signing->timestamp = tstamp.t64;
+ }
+ return true;
+}
+
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment
+ *
+ * This function calculates the checksum and sets length and aircraft id correctly.
+ * It assumes that the message id and the payload are already correctly set. This function
+ * can also be used if the message header has already been written before (as in mavlink_msg_xxx_pack
+ * instead of mavlink_msg_xxx_pack_headerless), it just introduces little extra overhead.
+ *
+ * @param msg Message to finalize
+ * @param system_id Id of the sending (this) system, 1-127
+ * @param length Message length
+ */
+MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra)
+{
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ bool mavlink1 = (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) != 0;
+ bool signing = (!mavlink1) && status->signing && (status->signing->flags & MAVLINK_SIGNING_FLAG_SIGN_OUTGOING);
+ uint8_t signature_len = signing? MAVLINK_SIGNATURE_BLOCK_LEN : 0;
+ uint8_t header_len = MAVLINK_CORE_HEADER_LEN+1;
+ uint8_t buf[MAVLINK_CORE_HEADER_LEN+1];
+ if (mavlink1) {
+ msg->magic = MAVLINK_STX_MAVLINK1;
+ header_len = MAVLINK_CORE_HEADER_MAVLINK1_LEN+1;
+ } else {
+ msg->magic = MAVLINK_STX;
+ }
+ msg->len = mavlink1?min_length:_mav_trim_payload(_MAV_PAYLOAD(msg), length);
+ msg->sysid = system_id;
+ msg->compid = component_id;
+ msg->incompat_flags = 0;
+ if (signing) {
+ msg->incompat_flags |= MAVLINK_IFLAG_SIGNED;
+ }
+ msg->compat_flags = 0;
+ msg->seq = status->current_tx_seq;
+ status->current_tx_seq = status->current_tx_seq + 1;
+
+ // form the header as a byte array for the crc
+ buf[0] = msg->magic;
+ buf[1] = msg->len;
+ if (mavlink1) {
+ buf[2] = msg->seq;
+ buf[3] = msg->sysid;
+ buf[4] = msg->compid;
+ buf[5] = msg->msgid & 0xFF;
+ } else {
+ buf[2] = msg->incompat_flags;
+ buf[3] = msg->compat_flags;
+ buf[4] = msg->seq;
+ buf[5] = msg->sysid;
+ buf[6] = msg->compid;
+ buf[7] = msg->msgid & 0xFF;
+ buf[8] = (msg->msgid >> 8) & 0xFF;
+ buf[9] = (msg->msgid >> 16) & 0xFF;
+ }
+
+ msg->checksum = crc_calculate(&buf[1], header_len-1);
+ crc_accumulate_buffer(&msg->checksum, _MAV_PAYLOAD(msg), msg->len);
+ crc_accumulate(crc_extra, &msg->checksum);
+ mavlink_ck_a(msg) = (uint8_t)(msg->checksum & 0xFF);
+ mavlink_ck_b(msg) = (uint8_t)(msg->checksum >> 8);
+
+ if (signing) {
+ mavlink_sign_packet(status->signing,
+ msg->signature,
+ (const uint8_t *)buf, header_len,
+ (const uint8_t *)_MAV_PAYLOAD(msg), msg->len,
+ (const uint8_t *)_MAV_PAYLOAD(msg)+(uint16_t)msg->len);
+ }
+
+ return msg->len + header_len + 2 + signature_len;
+}
+
+
+/**
+ * @brief Finalize a MAVLink message with MAVLINK_COMM_0 as default channel
+ */
+MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra)
+{
+ return mavlink_finalize_message_chan(msg, system_id, component_id, MAVLINK_COMM_0, min_length, length, crc_extra);
+}
+
+static inline void _mav_parse_error(mavlink_status_t *status)
+{
+ status->parse_error++;
+}
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+
+/**
+ * @brief Finalize a MAVLink message with channel assignment and send
+ */
+MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint32_t msgid,
+ const char *packet,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra)
+{
+ uint16_t checksum;
+ uint8_t buf[MAVLINK_NUM_HEADER_BYTES];
+ uint8_t ck[2];
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ uint8_t header_len = MAVLINK_CORE_HEADER_LEN;
+ uint8_t signature_len = 0;
+ uint8_t signature[MAVLINK_SIGNATURE_BLOCK_LEN];
+ bool mavlink1 = (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) != 0;
+ bool signing = (!mavlink1) && status->signing && (status->signing->flags & MAVLINK_SIGNING_FLAG_SIGN_OUTGOING);
+
+ if (mavlink1) {
+ length = min_length;
+ if (msgid > 255) {
+ // can't send 16 bit messages
+ _mav_parse_error(status);
+ return;
+ }
+ header_len = MAVLINK_CORE_HEADER_MAVLINK1_LEN;
+ buf[0] = MAVLINK_STX_MAVLINK1;
+ buf[1] = length;
+ buf[2] = status->current_tx_seq;
+ buf[3] = mavlink_system.sysid;
+ buf[4] = mavlink_system.compid;
+ buf[5] = msgid & 0xFF;
+ } else {
+ uint8_t incompat_flags = 0;
+ if (signing) {
+ incompat_flags |= MAVLINK_IFLAG_SIGNED;
+ }
+ length = _mav_trim_payload(packet, length);
+ buf[0] = MAVLINK_STX;
+ buf[1] = length;
+ buf[2] = incompat_flags;
+ buf[3] = 0; // compat_flags
+ buf[4] = status->current_tx_seq;
+ buf[5] = mavlink_system.sysid;
+ buf[6] = mavlink_system.compid;
+ buf[7] = msgid & 0xFF;
+ buf[8] = (msgid >> 8) & 0xFF;
+ buf[9] = (msgid >> 16) & 0xFF;
+ }
+ status->current_tx_seq++;
+ checksum = crc_calculate((const uint8_t*)&buf[1], header_len);
+ crc_accumulate_buffer(&checksum, packet, length);
+ crc_accumulate(crc_extra, &checksum);
+ ck[0] = (uint8_t)(checksum & 0xFF);
+ ck[1] = (uint8_t)(checksum >> 8);
+
+ if (signing) {
+ // possibly add a signature
+ signature_len = mavlink_sign_packet(status->signing, signature, buf, header_len+1,
+ (const uint8_t *)packet, length, ck);
+ }
+
+ MAVLINK_START_UART_SEND(chan, header_len + 3 + (uint16_t)length + (uint16_t)signature_len);
+ _mavlink_send_uart(chan, (const char *)buf, header_len+1);
+ _mavlink_send_uart(chan, packet, length);
+ _mavlink_send_uart(chan, (const char *)ck, 2);
+ if (signature_len != 0) {
+ _mavlink_send_uart(chan, (const char *)signature, signature_len);
+ }
+ MAVLINK_END_UART_SEND(chan, header_len + 3 + (uint16_t)length + (uint16_t)signature_len);
+}
+
+/**
+ * @brief re-send a message over a uart channel
+ * this is more stack efficient than re-marshalling the message
+ * If the message is signed then the original signature is also sent
+ */
+MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg)
+{
+ uint8_t ck[2];
+
+ ck[0] = (uint8_t)(msg->checksum & 0xFF);
+ ck[1] = (uint8_t)(msg->checksum >> 8);
+ // XXX use the right sequence here
+
+ uint8_t header_len;
+ uint8_t signature_len;
+
+ if (msg->magic == MAVLINK_STX_MAVLINK1) {
+ header_len = MAVLINK_CORE_HEADER_MAVLINK1_LEN + 1;
+ signature_len = 0;
+ MAVLINK_START_UART_SEND(chan, header_len + msg->len + 2 + signature_len);
+ // we can't send the structure directly as it has extra mavlink2 elements in it
+ uint8_t buf[header_len];
+ buf[0] = msg->magic;
+ buf[1] = msg->len;
+ buf[2] = msg->seq;
+ buf[3] = msg->sysid;
+ buf[4] = msg->compid;
+ buf[5] = msg->msgid & 0xFF;
+ _mavlink_send_uart(chan, (const char*)buf, header_len);
+ } else {
+ header_len = MAVLINK_CORE_HEADER_LEN + 1;
+ signature_len = (msg->incompat_flags & MAVLINK_IFLAG_SIGNED)?MAVLINK_SIGNATURE_BLOCK_LEN:0;
+ MAVLINK_START_UART_SEND(chan, header_len + msg->len + 2 + signature_len);
+ uint8_t buf[header_len];
+ buf[0] = msg->magic;
+ buf[1] = msg->len;
+ buf[2] = msg->incompat_flags;
+ buf[3] = msg->compat_flags;
+ buf[4] = msg->seq;
+ buf[5] = msg->sysid;
+ buf[6] = msg->compid;
+ buf[7] = msg->msgid & 0xFF;
+ buf[8] = (msg->msgid >> 8) & 0xFF;
+ buf[9] = (msg->msgid >> 16) & 0xFF;
+ _mavlink_send_uart(chan, (const char *)buf, header_len);
+ }
+ _mavlink_send_uart(chan, _MAV_PAYLOAD(msg), msg->len);
+ _mavlink_send_uart(chan, (const char *)ck, 2);
+ if (signature_len != 0) {
+ _mavlink_send_uart(chan, (const char *)msg->signature, MAVLINK_SIGNATURE_BLOCK_LEN);
+ }
+ MAVLINK_END_UART_SEND(chan, header_len + msg->len + 2 + signature_len);
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+/**
+ * @brief Pack a message to send it over a serial byte stream
+ */
+MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buf, const mavlink_message_t *msg)
+{
+ uint8_t signature_len, header_len;
+ uint8_t *ck;
+ uint8_t length = msg->len;
+
+ if (msg->magic == MAVLINK_STX_MAVLINK1) {
+ signature_len = 0;
+ header_len = MAVLINK_CORE_HEADER_MAVLINK1_LEN;
+ buf[0] = msg->magic;
+ buf[1] = length;
+ buf[2] = msg->seq;
+ buf[3] = msg->sysid;
+ buf[4] = msg->compid;
+ buf[5] = msg->msgid & 0xFF;
+ memcpy(&buf[6], _MAV_PAYLOAD(msg), msg->len);
+ ck = buf + header_len + 1 + (uint16_t)msg->len;
+ } else {
+ length = _mav_trim_payload(_MAV_PAYLOAD(msg), length);
+ header_len = MAVLINK_CORE_HEADER_LEN;
+ buf[0] = msg->magic;
+ buf[1] = length;
+ buf[2] = msg->incompat_flags;
+ buf[3] = msg->compat_flags;
+ buf[4] = msg->seq;
+ buf[5] = msg->sysid;
+ buf[6] = msg->compid;
+ buf[7] = msg->msgid & 0xFF;
+ buf[8] = (msg->msgid >> 8) & 0xFF;
+ buf[9] = (msg->msgid >> 16) & 0xFF;
+ memcpy(&buf[10], _MAV_PAYLOAD(msg), length);
+ ck = buf + header_len + 1 + (uint16_t)length;
+ signature_len = (msg->incompat_flags & MAVLINK_IFLAG_SIGNED)?MAVLINK_SIGNATURE_BLOCK_LEN:0;
+ }
+ ck[0] = (uint8_t)(msg->checksum & 0xFF);
+ ck[1] = (uint8_t)(msg->checksum >> 8);
+ if (signature_len > 0) {
+ memcpy(&ck[2], msg->signature, signature_len);
+ }
+
+ return header_len + 1 + 2 + (uint16_t)length + (uint16_t)signature_len;
+}
+
+union __mavlink_bitfield {
+ uint8_t uint8;
+ int8_t int8;
+ uint16_t uint16;
+ int16_t int16;
+ uint32_t uint32;
+ int32_t int32;
+};
+
+
+MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg)
+{
+ crc_init(&msg->checksum);
+}
+
+MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c)
+{
+ crc_accumulate(c, &msg->checksum);
+}
+
+/*
+ return the crc_entry value for a msgid
+*/
+MAVLINK_HELPER const mavlink_msg_entry_t *mavlink_get_msg_entry(uint32_t msgid)
+{
+ static const mavlink_msg_entry_t mavlink_message_crcs[] = MAVLINK_MESSAGE_CRCS;
+ /*
+ use a bisection search to find the right entry. A perfect hash may be better
+ Note that this assumes the table is sorted by msgid
+ */
+ uint32_t low=0, high=sizeof(mavlink_message_crcs)/sizeof(mavlink_message_crcs[0]);
+ while (low < high) {
+ uint32_t mid = (low+1+high)/2;
+ if (msgid < mavlink_message_crcs[mid].msgid) {
+ high = mid-1;
+ continue;
+ }
+ if (msgid > mavlink_message_crcs[mid].msgid) {
+ low = mid;
+ continue;
+ }
+ low = mid;
+ break;
+ }
+ if (mavlink_message_crcs[low].msgid != msgid) {
+ // msgid is not in the table
+ return NULL;
+ }
+ return &mavlink_message_crcs[low];
+}
+
+/*
+ return the crc_extra value for a message
+*/
+MAVLINK_HELPER uint8_t mavlink_get_crc_extra(const mavlink_message_t *msg)
+{
+ const mavlink_msg_entry_t *e = mavlink_get_msg_entry(msg->msgid);
+ return e?e->crc_extra:0;
+}
+
+/*
+ return the expected message length
+*/
+#define MAVLINK_HAVE_EXPECTED_MESSAGE_LENGTH
+MAVLINK_HELPER uint8_t mavlink_expected_message_length(const mavlink_message_t *msg)
+{
+ const mavlink_msg_entry_t *e = mavlink_get_msg_entry(msg->msgid);
+ return e?e->msg_len:0;
+}
+
+/**
+ * This is a varient of mavlink_frame_char() but with caller supplied
+ * parsing buffers. It is useful when you want to create a MAVLink
+ * parser in a library that doesn't use any global variables
+ *
+ * @param rxmsg parsing message buffer
+ * @param status parsing starus buffer
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_frame_char(chan, byte, &msg) != MAVLINK_FRAMING_INCOMPLETE)
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg,
+ mavlink_status_t* status,
+ uint8_t c,
+ mavlink_message_t* r_message,
+ mavlink_status_t* r_mavlink_status)
+{
+ /* Enable this option to check the length of each message.
+ This allows invalid messages to be caught much sooner. Use if the transmission
+ medium is prone to missing (or extra) characters (e.g. a radio that fades in
+ and out). Only use if the channel will only contain messages types listed in
+ the headers.
+ */
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+#ifndef MAVLINK_MESSAGE_LENGTH
+ static const uint8_t mavlink_message_lengths[256] = MAVLINK_MESSAGE_LENGTHS;
+#define MAVLINK_MESSAGE_LENGTH(msgid) mavlink_message_lengths[msgid]
+#endif
+#endif
+
+ int bufferIndex = 0;
+
+ status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+
+ switch (status->parse_state)
+ {
+ case MAVLINK_PARSE_STATE_UNINIT:
+ case MAVLINK_PARSE_STATE_IDLE:
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ rxmsg->magic = c;
+ status->flags &= ~MAVLINK_STATUS_FLAG_IN_MAVLINK1;
+ mavlink_start_checksum(rxmsg);
+ } else if (c == MAVLINK_STX_MAVLINK1)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ rxmsg->magic = c;
+ status->flags |= MAVLINK_STATUS_FLAG_IN_MAVLINK1;
+ mavlink_start_checksum(rxmsg);
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_STX:
+ if (status->msg_received
+/* Support shorter buffers than the
+ default maximum packet size */
+#if (MAVLINK_MAX_PAYLOAD_LEN < 255)
+ || c > MAVLINK_MAX_PAYLOAD_LEN
+#endif
+ )
+ {
+ status->buffer_overrun++;
+ _mav_parse_error(status);
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ }
+ else
+ {
+ // NOT counting STX, LENGTH, SEQ, SYSID, COMPID, MSGID, CRC1 and CRC2
+ rxmsg->len = c;
+ status->packet_idx = 0;
+ mavlink_update_checksum(rxmsg, c);
+ if (status->flags & MAVLINK_STATUS_FLAG_IN_MAVLINK1) {
+ rxmsg->incompat_flags = 0;
+ rxmsg->compat_flags = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS;
+ } else {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_LENGTH;
+ }
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_LENGTH:
+ rxmsg->incompat_flags = c;
+ if ((rxmsg->incompat_flags & ~MAVLINK_IFLAG_MASK) != 0) {
+ // message includes an incompatible feature flag
+ _mav_parse_error(status);
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ break;
+ }
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_INCOMPAT_FLAGS;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_INCOMPAT_FLAGS:
+ rxmsg->compat_flags = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS:
+ rxmsg->seq = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SEQ;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SEQ:
+ rxmsg->sysid = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SYSID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SYSID:
+ rxmsg->compid = c;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_COMPID:
+ rxmsg->msgid = c;
+ mavlink_update_checksum(rxmsg, c);
+ if (status->flags & MAVLINK_STATUS_FLAG_IN_MAVLINK1) {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID3;
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+ if (rxmsg->len != MAVLINK_MESSAGE_LENGTH(rxmsg->msgid))
+ {
+ _mav_parse_error(status);
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ break;
+ }
+#endif
+ } else {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID1;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID1:
+ rxmsg->msgid |= c<<8;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID2;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID2:
+ rxmsg->msgid |= c<<16;
+ mavlink_update_checksum(rxmsg, c);
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID3;
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+ if (rxmsg->len != MAVLINK_MESSAGE_LENGTH(rxmsg->msgid))
+ {
+ _mav_parse_error(status);
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ break;
+ }
+#endif
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID3:
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx++] = (char)c;
+ mavlink_update_checksum(rxmsg, c);
+ if (status->packet_idx == rxmsg->len)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_PAYLOAD: {
+ const mavlink_msg_entry_t *e = mavlink_get_msg_entry(rxmsg->msgid);
+ uint8_t crc_extra = e?e->crc_extra:0;
+ mavlink_update_checksum(rxmsg, crc_extra);
+ if (c != (rxmsg->checksum & 0xFF)) {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_BAD_CRC1;
+ } else {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_CRC1;
+ }
+ rxmsg->ck[0] = c;
+
+ // zero-fill the packet to cope with short incoming packets
+ if (e && status->packet_idx < e->msg_len) {
+ memset(&_MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx], 0, e->msg_len - status->packet_idx);
+ }
+ break;
+ }
+
+ case MAVLINK_PARSE_STATE_GOT_CRC1:
+ case MAVLINK_PARSE_STATE_GOT_BAD_CRC1:
+ if (status->parse_state == MAVLINK_PARSE_STATE_GOT_BAD_CRC1 || c != (rxmsg->checksum >> 8)) {
+ // got a bad CRC message
+ status->msg_received = MAVLINK_FRAMING_BAD_CRC;
+ } else {
+ // Successfully got message
+ status->msg_received = MAVLINK_FRAMING_OK;
+ }
+ rxmsg->ck[1] = c;
+ if (rxmsg->incompat_flags & MAVLINK_IFLAG_SIGNED) {
+ status->parse_state = MAVLINK_PARSE_STATE_SIGNATURE_WAIT;
+ status->signature_wait = MAVLINK_SIGNATURE_BLOCK_LEN;
+ status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+ } else {
+ if (status->signing &&
+ (status->signing->accept_unsigned_callback == NULL ||
+ !status->signing->accept_unsigned_callback(status, rxmsg->msgid))) {
+ // don't accept this unsigned packet
+ status->msg_received = MAVLINK_FRAMING_BAD_SIGNATURE;
+ }
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ memcpy(r_message, rxmsg, sizeof(mavlink_message_t));
+ }
+ break;
+ case MAVLINK_PARSE_STATE_SIGNATURE_WAIT:
+ rxmsg->signature[MAVLINK_SIGNATURE_BLOCK_LEN-status->signature_wait] = c;
+ status->signature_wait--;
+ if (status->signature_wait == 0) {
+ // we have the whole signature, check it is OK
+ bool sig_ok = mavlink_signature_check(status->signing, status->signing_streams, rxmsg);
+ if (!sig_ok &&
+ (status->signing->accept_unsigned_callback &&
+ status->signing->accept_unsigned_callback(status, rxmsg->msgid))) {
+ // accepted via application level override
+ sig_ok = true;
+ }
+ if (sig_ok) {
+ status->msg_received = MAVLINK_FRAMING_OK;
+ } else {
+ status->msg_received = MAVLINK_FRAMING_BAD_SIGNATURE;
+ }
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ memcpy(r_message, rxmsg, sizeof(mavlink_message_t));
+ }
+ break;
+ }
+
+ bufferIndex++;
+ // If a message has been sucessfully decoded, check index
+ if (status->msg_received == MAVLINK_FRAMING_OK)
+ {
+ //while(status->current_seq != rxmsg->seq)
+ //{
+ // status->packet_rx_drop_count++;
+ // status->current_seq++;
+ //}
+ status->current_rx_seq = rxmsg->seq;
+ // Initial condition: If no packet has been received so far, drop count is undefined
+ if (status->packet_rx_success_count == 0) status->packet_rx_drop_count = 0;
+ // Count this packet as received
+ status->packet_rx_success_count++;
+ }
+
+ r_message->len = rxmsg->len; // Provide visibility on how far we are into current msg
+ r_mavlink_status->parse_state = status->parse_state;
+ r_mavlink_status->packet_idx = status->packet_idx;
+ r_mavlink_status->current_rx_seq = status->current_rx_seq+1;
+ r_mavlink_status->packet_rx_success_count = status->packet_rx_success_count;
+ r_mavlink_status->packet_rx_drop_count = status->parse_error;
+ r_mavlink_status->flags = status->flags;
+ status->parse_error = 0;
+
+ if (status->msg_received == MAVLINK_FRAMING_BAD_CRC) {
+ /*
+ the CRC came out wrong. We now need to overwrite the
+ msg CRC with the one on the wire so that if the
+ caller decides to forward the message anyway that
+ mavlink_msg_to_send_buffer() won't overwrite the
+ checksum
+ */
+ r_message->checksum = rxmsg->ck[0] | (rxmsg->ck[1]<<8);
+ }
+
+ return status->msg_received;
+}
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0, 1 or
+ * 2 (MAVLINK_FRAMING_INCOMPLETE, MAVLINK_FRAMING_OK or MAVLINK_FRAMING_BAD_CRC)
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *returnMsg and the channel's status is
+ * copied into *returnStats.
+ *
+ * @param chan ID of the current channel. This allows to parse different channels with this function.
+ * a channel is not a physical message channel like a serial port, but a logic partition of
+ * the communication streams in this case. COMM_NB is the limit for the number of channels
+ * on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 on good message and CRC, 2 on bad CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_frame_char(chan, byte, &msg) != MAVLINK_FRAMING_INCOMPLETE)
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+ return mavlink_frame_char_buffer(mavlink_get_channel_buffer(chan),
+ mavlink_get_channel_status(chan),
+ c,
+ r_message,
+ r_mavlink_status);
+}
+
+/**
+ * Set the protocol version
+ */
+MAVLINK_HELPER void mavlink_set_proto_version(uint8_t chan, unsigned int version)
+{
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ if (version > 1) {
+ status->flags &= ~(MAVLINK_STATUS_FLAG_OUT_MAVLINK1);
+ } else {
+ status->flags |= MAVLINK_STATUS_FLAG_OUT_MAVLINK1;
+ }
+}
+
+/**
+ * Get the protocol version
+ *
+ * @return 1 for v1, 2 for v2
+ */
+MAVLINK_HELPER unsigned int mavlink_get_proto_version(uint8_t chan)
+{
+ mavlink_status_t *status = mavlink_get_channel_status(chan);
+ if ((status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) > 0) {
+ return 1;
+ } else {
+ return 2;
+ }
+}
+
+/**
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. This function will return 0 or 1.
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *returnMsg and the channel's status is
+ * copied into *returnStats.
+ *
+ * @param chan ID of the current channel. This allows to parse different channels with this function.
+ * a channel is not a physical message channel like a serial port, but a logic partition of
+ * the communication streams in this case. COMM_NB is the limit for the number of channels
+ * on MCU (e.g. ARM7), while COMM_NB_HIGH is the limit for the number of channels in Linux/Windows
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded or bad CRC, 1 on good message and CRC
+ *
+ * A typical use scenario of this function call is:
+ *
+ * @code
+ * #include
+ *
+ * mavlink_message_t msg;
+ * int chan = 0;
+ *
+ *
+ * while(serial.bytesAvailable > 0)
+ * {
+ * uint8_t byte = serial.getNextByte();
+ * if (mavlink_parse_char(chan, byte, &msg))
+ * {
+ * printf("Received message with ID %d, sequence: %d from component %d of system %d", msg.msgid, msg.seq, msg.compid, msg.sysid);
+ * }
+ * }
+ *
+ *
+ * @endcode
+ */
+MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status)
+{
+ uint8_t msg_received = mavlink_frame_char(chan, c, r_message, r_mavlink_status);
+ if (msg_received == MAVLINK_FRAMING_BAD_CRC ||
+ msg_received == MAVLINK_FRAMING_BAD_SIGNATURE) {
+ // we got a bad CRC. Treat as a parse failure
+ mavlink_message_t* rxmsg = mavlink_get_channel_buffer(chan);
+ mavlink_status_t* status = mavlink_get_channel_status(chan);
+ _mav_parse_error(status);
+ status->msg_received = MAVLINK_FRAMING_INCOMPLETE;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ mavlink_start_checksum(rxmsg);
+ }
+ return 0;
+ }
+ return msg_received;
+}
+
+/**
+ * @brief Put a bitfield of length 1-32 bit into the buffer
+ *
+ * @param b the value to add, will be encoded in the bitfield
+ * @param bits number of bits to use to encode b, e.g. 1 for boolean, 2, 3, etc.
+ * @param packet_index the position in the packet (the index of the first byte to use)
+ * @param bit_index the position in the byte (the index of the first bit to use)
+ * @param buffer packet buffer to write into
+ * @return new position of the last used byte in the buffer
+ */
+MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index, uint8_t* r_bit_index, uint8_t* buffer)
+{
+ uint16_t bits_remain = bits;
+ // Transform number into network order
+ int32_t v;
+ uint8_t i_bit_index, i_byte_index, curr_bits_n;
+#if MAVLINK_NEED_BYTE_SWAP
+ union {
+ int32_t i;
+ uint8_t b[4];
+ } bin, bout;
+ bin.i = b;
+ bout.b[0] = bin.b[3];
+ bout.b[1] = bin.b[2];
+ bout.b[2] = bin.b[1];
+ bout.b[3] = bin.b[0];
+ v = bout.i;
+#else
+ v = b;
+#endif
+
+ // buffer in
+ // 01100000 01000000 00000000 11110001
+ // buffer out
+ // 11110001 00000000 01000000 01100000
+
+ // Existing partly filled byte (four free slots)
+ // 0111xxxx
+
+ // Mask n free bits
+ // 00001111 = 2^0 + 2^1 + 2^2 + 2^3 = 2^n - 1
+ // = ((uint32_t)(1 << n)) - 1; // = 2^n - 1
+
+ // Shift n bits into the right position
+ // out = in >> n;
+
+ // Mask and shift bytes
+ i_bit_index = bit_index;
+ i_byte_index = packet_index;
+ if (bit_index > 0)
+ {
+ // If bits were available at start, they were available
+ // in the byte before the current index
+ i_byte_index--;
+ }
+
+ // While bits have not been packed yet
+ while (bits_remain > 0)
+ {
+ // Bits still have to be packed
+ // there can be more than 8 bits, so
+ // we might have to pack them into more than one byte
+
+ // First pack everything we can into the current 'open' byte
+ //curr_bits_n = bits_remain << 3; // Equals bits_remain mod 8
+ //FIXME
+ if (bits_remain <= (uint8_t)(8 - i_bit_index))
+ {
+ // Enough space
+ curr_bits_n = (uint8_t)bits_remain;
+ }
+ else
+ {
+ curr_bits_n = (8 - i_bit_index);
+ }
+
+ // Pack these n bits into the current byte
+ // Mask out whatever was at that position with ones (xxx11111)
+ buffer[i_byte_index] &= (0xFF >> (8 - curr_bits_n));
+ // Put content to this position, by masking out the non-used part
+ buffer[i_byte_index] |= ((0x00 << curr_bits_n) & v);
+
+ // Increment the bit index
+ i_bit_index += curr_bits_n;
+
+ // Now proceed to the next byte, if necessary
+ bits_remain -= curr_bits_n;
+ if (bits_remain > 0)
+ {
+ // Offer another 8 bits / one byte
+ i_byte_index++;
+ i_bit_index = 0;
+ }
+ }
+
+ *r_bit_index = i_bit_index;
+ // If a partly filled byte is present, mark this as consumed
+ if (i_bit_index != 7) i_byte_index++;
+ return i_byte_index - packet_index;
+}
+
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+// To make MAVLink work on your MCU, define comm_send_ch() if you wish
+// to send 1 byte at a time, or MAVLINK_SEND_UART_BYTES() to send a
+// whole packet at a time
+
+/*
+
+#include "mavlink_types.h"
+
+void comm_send_ch(mavlink_channel_t chan, uint8_t ch)
+{
+ if (chan == MAVLINK_COMM_0)
+ {
+ uart0_transmit(ch);
+ }
+ if (chan == MAVLINK_COMM_1)
+ {
+ uart1_transmit(ch);
+ }
+}
+ */
+
+MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len)
+{
+#ifdef MAVLINK_SEND_UART_BYTES
+ /* this is the more efficient approach, if the platform
+ defines it */
+ MAVLINK_SEND_UART_BYTES(chan, (const uint8_t *)buf, len);
+#else
+ /* fallback to one byte at a time */
+ uint16_t i;
+ for (i = 0; i < len; i++) {
+ comm_send_ch(chan, (uint8_t)buf[i]);
+ }
+#endif
+}
+#endif // MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_sha256.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_sha256.h
new file mode 100644
index 000000000..0cfdfc747
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_sha256.h
@@ -0,0 +1,244 @@
+#pragma once
+
+/*
+ sha-256 implementation for MAVLink based on Heimdal sources, with
+ modifications to suit mavlink headers
+ */
+/*
+ * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ allow implementation to provide their own sha256 with the same API
+*/
+#ifndef HAVE_MAVLINK_SHA256
+
+#ifndef MAVLINK_HELPER
+#define MAVLINK_HELPER
+#endif
+
+typedef struct {
+ unsigned int sz[2];
+ uint32_t counter[8];
+ union {
+ unsigned char save_bytes[64];
+ uint32_t save_u32[16];
+ } u;
+} mavlink_sha256_ctx;
+
+#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
+#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
+
+#define ROTR(x,n) (((x)>>(n)) | ((x) << (32 - (n))))
+
+#define Sigma0(x) (ROTR(x,2) ^ ROTR(x,13) ^ ROTR(x,22))
+#define Sigma1(x) (ROTR(x,6) ^ ROTR(x,11) ^ ROTR(x,25))
+#define sigma0(x) (ROTR(x,7) ^ ROTR(x,18) ^ ((x)>>3))
+#define sigma1(x) (ROTR(x,17) ^ ROTR(x,19) ^ ((x)>>10))
+
+#define A m->counter[0]
+#define B m->counter[1]
+#define C m->counter[2]
+#define D m->counter[3]
+#define E m->counter[4]
+#define F m->counter[5]
+#define G m->counter[6]
+#define H m->counter[7]
+
+static const uint32_t mavlink_sha256_constant_256[64] = {
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+};
+
+MAVLINK_HELPER void mavlink_sha256_init(mavlink_sha256_ctx *m)
+{
+ m->sz[0] = 0;
+ m->sz[1] = 0;
+ A = 0x6a09e667;
+ B = 0xbb67ae85;
+ C = 0x3c6ef372;
+ D = 0xa54ff53a;
+ E = 0x510e527f;
+ F = 0x9b05688c;
+ G = 0x1f83d9ab;
+ H = 0x5be0cd19;
+}
+
+static inline void mavlink_sha256_calc(mavlink_sha256_ctx *m, uint32_t *in)
+{
+ uint32_t AA, BB, CC, DD, EE, FF, GG, HH;
+ uint32_t data[64];
+ int i;
+
+ AA = A;
+ BB = B;
+ CC = C;
+ DD = D;
+ EE = E;
+ FF = F;
+ GG = G;
+ HH = H;
+
+ for (i = 0; i < 16; ++i)
+ data[i] = in[i];
+ for (i = 16; i < 64; ++i)
+ data[i] = sigma1(data[i-2]) + data[i-7] +
+ sigma0(data[i-15]) + data[i - 16];
+
+ for (i = 0; i < 64; i++) {
+ uint32_t T1, T2;
+
+ T1 = HH + Sigma1(EE) + Ch(EE, FF, GG) + mavlink_sha256_constant_256[i] + data[i];
+ T2 = Sigma0(AA) + Maj(AA,BB,CC);
+
+ HH = GG;
+ GG = FF;
+ FF = EE;
+ EE = DD + T1;
+ DD = CC;
+ CC = BB;
+ BB = AA;
+ AA = T1 + T2;
+ }
+
+ A += AA;
+ B += BB;
+ C += CC;
+ D += DD;
+ E += EE;
+ F += FF;
+ G += GG;
+ H += HH;
+}
+
+MAVLINK_HELPER void mavlink_sha256_update(mavlink_sha256_ctx *m, const void *v, uint32_t len)
+{
+ const unsigned char *p = (const unsigned char *)v;
+ uint32_t old_sz = m->sz[0];
+ uint32_t offset;
+
+ m->sz[0] += len * 8;
+ if (m->sz[0] < old_sz)
+ ++m->sz[1];
+ offset = (old_sz / 8) % 64;
+ while(len > 0){
+ uint32_t l = 64 - offset;
+ if (len < l) {
+ l = len;
+ }
+ memcpy(m->u.save_bytes + offset, p, l);
+ offset += l;
+ p += l;
+ len -= l;
+ if(offset == 64){
+ int i;
+ uint32_t current[16];
+ const uint32_t *u = m->u.save_u32;
+ for (i = 0; i < 16; i++){
+ const uint8_t *p1 = (const uint8_t *)&u[i];
+ uint8_t *p2 = (uint8_t *)¤t[i];
+ p2[0] = p1[3];
+ p2[1] = p1[2];
+ p2[2] = p1[1];
+ p2[3] = p1[0];
+ }
+ mavlink_sha256_calc(m, current);
+ offset = 0;
+ }
+ }
+}
+
+/*
+ get first 48 bits of final sha256 hash
+ */
+MAVLINK_HELPER void mavlink_sha256_final_48(mavlink_sha256_ctx *m, uint8_t result[6])
+{
+ unsigned char zeros[72];
+ unsigned offset = (m->sz[0] / 8) % 64;
+ unsigned int dstart = (120 - offset - 1) % 64 + 1;
+ uint8_t *p = (uint8_t *)&m->counter[0];
+
+ *zeros = 0x80;
+ memset (zeros + 1, 0, sizeof(zeros) - 1);
+ zeros[dstart+7] = (m->sz[0] >> 0) & 0xff;
+ zeros[dstart+6] = (m->sz[0] >> 8) & 0xff;
+ zeros[dstart+5] = (m->sz[0] >> 16) & 0xff;
+ zeros[dstart+4] = (m->sz[0] >> 24) & 0xff;
+ zeros[dstart+3] = (m->sz[1] >> 0) & 0xff;
+ zeros[dstart+2] = (m->sz[1] >> 8) & 0xff;
+ zeros[dstart+1] = (m->sz[1] >> 16) & 0xff;
+ zeros[dstart+0] = (m->sz[1] >> 24) & 0xff;
+
+ mavlink_sha256_update(m, zeros, dstart + 8);
+
+ // this ordering makes the result consistent with taking the first
+ // 6 bytes of more conventional sha256 functions. It assumes
+ // little-endian ordering of m->counter
+ result[0] = p[3];
+ result[1] = p[2];
+ result[2] = p[1];
+ result[3] = p[0];
+ result[4] = p[7];
+ result[5] = p[6];
+}
+
+// prevent conflicts with users of the header
+#undef A
+#undef B
+#undef C
+#undef D
+#undef E
+#undef F
+#undef G
+#undef H
+#undef Ch
+#undef ROTR
+#undef Sigma0
+#undef Sigma1
+#undef sigma0
+#undef sigma1
+
+#endif // HAVE_MAVLINK_SHA256
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_types.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_types.h
new file mode 100644
index 000000000..1ac4029b1
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/mavlink_types.h
@@ -0,0 +1,291 @@
+#pragma once
+
+// Visual Studio versions before 2010 don't have stdint.h, so we just error out.
+#if (defined _MSC_VER) && (_MSC_VER < 1600)
+#error "The C-MAVLink implementation requires Visual Studio 2010 or greater"
+#endif
+
+#include
+
+// Macro to define packed structures
+#ifdef __GNUC__
+ #define MAVPACKED( __Declaration__ ) __Declaration__ __attribute__((packed))
+#else
+ #define MAVPACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )
+#endif
+
+#ifndef MAVLINK_MAX_PAYLOAD_LEN
+// it is possible to override this, but be careful!
+#define MAVLINK_MAX_PAYLOAD_LEN 255 ///< Maximum payload length
+#endif
+
+#define MAVLINK_CORE_HEADER_LEN 9 ///< Length of core header (of the comm. layer)
+#define MAVLINK_CORE_HEADER_MAVLINK1_LEN 5 ///< Length of MAVLink1 core header (of the comm. layer)
+#define MAVLINK_NUM_HEADER_BYTES (MAVLINK_CORE_HEADER_LEN + 1) ///< Length of all header bytes, including core and stx
+#define MAVLINK_NUM_CHECKSUM_BYTES 2
+#define MAVLINK_NUM_NON_PAYLOAD_BYTES (MAVLINK_NUM_HEADER_BYTES + MAVLINK_NUM_CHECKSUM_BYTES)
+
+#define MAVLINK_SIGNATURE_BLOCK_LEN 13
+
+#define MAVLINK_MAX_PACKET_LEN (MAVLINK_MAX_PAYLOAD_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES + MAVLINK_SIGNATURE_BLOCK_LEN) ///< Maximum packet length
+
+/**
+ * Old-style 4 byte param union
+ *
+ * This struct is the data format to be used when sending
+ * parameters. The parameter should be copied to the native
+ * type (without type conversion)
+ * and re-instanted on the receiving side using the
+ * native type as well.
+ */
+MAVPACKED(
+typedef struct param_union {
+ union {
+ float param_float;
+ int32_t param_int32;
+ uint32_t param_uint32;
+ int16_t param_int16;
+ uint16_t param_uint16;
+ int8_t param_int8;
+ uint8_t param_uint8;
+ uint8_t bytes[4];
+ };
+ uint8_t type;
+}) mavlink_param_union_t;
+
+
+/**
+ * New-style 8 byte param union
+ * mavlink_param_union_double_t will be 8 bytes long, and treated as needing 8 byte alignment for the purposes of MAVLink 1.0 field ordering.
+ * The mavlink_param_union_double_t will be treated as a little-endian structure.
+ *
+ * If is_double is 1 then the type is a double, and the remaining 63 bits are the double, with the lowest bit of the mantissa zero.
+ * The intention is that by replacing the is_double bit with 0 the type can be directly used as a double (as the is_double bit corresponds to the
+ * lowest mantissa bit of a double). If is_double is 0 then mavlink_type gives the type in the union.
+ * The mavlink_types.h header will also need to have shifts/masks to define the bit boundaries in the above,
+ * as bitfield ordering isn’t consistent between platforms. The above is intended to be for gcc on x86,
+ * which should be the same as gcc on little-endian arm. When using shifts/masks the value will be treated as a 64 bit unsigned number,
+ * and the bits pulled out using the shifts/masks.
+*/
+MAVPACKED(
+typedef struct param_union_extended {
+ union {
+ struct {
+ uint8_t is_double:1;
+ uint8_t mavlink_type:7;
+ union {
+ char c;
+ uint8_t uint8;
+ int8_t int8;
+ uint16_t uint16;
+ int16_t int16;
+ uint32_t uint32;
+ int32_t int32;
+ float f;
+ uint8_t align[7];
+ };
+ };
+ uint8_t data[8];
+ };
+}) mavlink_param_union_double_t;
+
+/**
+ * This structure is required to make the mavlink_send_xxx convenience functions
+ * work, as it tells the library what the current system and component ID are.
+ */
+MAVPACKED(
+typedef struct __mavlink_system {
+ uint8_t sysid; ///< Used by the MAVLink message_xx_send() convenience function
+ uint8_t compid; ///< Used by the MAVLink message_xx_send() convenience function
+}) mavlink_system_t;
+
+MAVPACKED(
+typedef struct __mavlink_message {
+ uint16_t checksum; ///< sent at end of packet
+ uint8_t magic; ///< protocol magic marker
+ uint8_t len; ///< Length of payload
+ uint8_t incompat_flags; ///< flags that must be understood
+ uint8_t compat_flags; ///< flags that can be ignored if not understood
+ uint8_t seq; ///< Sequence of packet
+ uint8_t sysid; ///< ID of message sender system/aircraft
+ uint8_t compid; ///< ID of the message sender component
+ uint32_t msgid:24; ///< ID of message in payload
+ uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8];
+ uint8_t ck[2]; ///< incoming checksum bytes
+ uint8_t signature[MAVLINK_SIGNATURE_BLOCK_LEN];
+}) mavlink_message_t;
+
+typedef enum {
+ MAVLINK_TYPE_CHAR = 0,
+ MAVLINK_TYPE_UINT8_T = 1,
+ MAVLINK_TYPE_INT8_T = 2,
+ MAVLINK_TYPE_UINT16_T = 3,
+ MAVLINK_TYPE_INT16_T = 4,
+ MAVLINK_TYPE_UINT32_T = 5,
+ MAVLINK_TYPE_INT32_T = 6,
+ MAVLINK_TYPE_UINT64_T = 7,
+ MAVLINK_TYPE_INT64_T = 8,
+ MAVLINK_TYPE_FLOAT = 9,
+ MAVLINK_TYPE_DOUBLE = 10
+} mavlink_message_type_t;
+
+#define MAVLINK_MAX_FIELDS 64
+
+typedef struct __mavlink_field_info {
+ const char *name; // name of this field
+ const char *print_format; // printing format hint, or NULL
+ mavlink_message_type_t type; // type of this field
+ unsigned int array_length; // if non-zero, field is an array
+ unsigned int wire_offset; // offset of each field in the payload
+ unsigned int structure_offset; // offset in a C structure
+} mavlink_field_info_t;
+
+// note that in this structure the order of fields is the order
+// in the XML file, not necessary the wire order
+typedef struct __mavlink_message_info {
+ uint32_t msgid; // message ID
+ const char *name; // name of the message
+ unsigned num_fields; // how many fields in this message
+ mavlink_field_info_t fields[MAVLINK_MAX_FIELDS]; // field information
+} mavlink_message_info_t;
+
+#define _MAV_PAYLOAD(msg) ((const char *)(&((msg)->payload64[0])))
+#define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
+
+// checksum is immediately after the payload bytes
+#define mavlink_ck_a(msg) *((msg)->len + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+#define mavlink_ck_b(msg) *(((msg)->len+(uint16_t)1) + (uint8_t *)_MAV_PAYLOAD_NON_CONST(msg))
+
+typedef enum {
+ MAVLINK_COMM_0,
+ MAVLINK_COMM_1,
+ MAVLINK_COMM_2,
+ MAVLINK_COMM_3
+} mavlink_channel_t;
+
+/*
+ * applications can set MAVLINK_COMM_NUM_BUFFERS to the maximum number
+ * of buffers they will use. If more are used, then the result will be
+ * a stack overrun
+ */
+#ifndef MAVLINK_COMM_NUM_BUFFERS
+#if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32)
+# define MAVLINK_COMM_NUM_BUFFERS 16
+#else
+# define MAVLINK_COMM_NUM_BUFFERS 4
+#endif
+#endif
+
+typedef enum {
+ MAVLINK_PARSE_STATE_UNINIT=0,
+ MAVLINK_PARSE_STATE_IDLE,
+ MAVLINK_PARSE_STATE_GOT_STX,
+ MAVLINK_PARSE_STATE_GOT_LENGTH,
+ MAVLINK_PARSE_STATE_GOT_INCOMPAT_FLAGS,
+ MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS,
+ MAVLINK_PARSE_STATE_GOT_SEQ,
+ MAVLINK_PARSE_STATE_GOT_SYSID,
+ MAVLINK_PARSE_STATE_GOT_COMPID,
+ MAVLINK_PARSE_STATE_GOT_MSGID1,
+ MAVLINK_PARSE_STATE_GOT_MSGID2,
+ MAVLINK_PARSE_STATE_GOT_MSGID3,
+ MAVLINK_PARSE_STATE_GOT_PAYLOAD,
+ MAVLINK_PARSE_STATE_GOT_CRC1,
+ MAVLINK_PARSE_STATE_GOT_BAD_CRC1,
+ MAVLINK_PARSE_STATE_SIGNATURE_WAIT
+} mavlink_parse_state_t; ///< The state machine for the comm parser
+
+typedef enum {
+ MAVLINK_FRAMING_INCOMPLETE=0,
+ MAVLINK_FRAMING_OK=1,
+ MAVLINK_FRAMING_BAD_CRC=2,
+ MAVLINK_FRAMING_BAD_SIGNATURE=3
+} mavlink_framing_t;
+
+#define MAVLINK_STATUS_FLAG_IN_MAVLINK1 1 // last incoming packet was MAVLink1
+#define MAVLINK_STATUS_FLAG_OUT_MAVLINK1 2 // generate MAVLink1 by default
+#define MAVLINK_STATUS_FLAG_IN_SIGNED 4 // last incoming packet was signed and validated
+#define MAVLINK_STATUS_FLAG_IN_BADSIG 8 // last incoming packet had a bad signature
+
+#define MAVLINK_STX_MAVLINK1 0xFE // marker for old protocol
+
+typedef struct __mavlink_status {
+ uint8_t msg_received; ///< Number of received messages
+ uint8_t buffer_overrun; ///< Number of buffer overruns
+ uint8_t parse_error; ///< Number of parse errors
+ mavlink_parse_state_t parse_state; ///< Parsing state machine
+ uint8_t packet_idx; ///< Index in current packet
+ uint8_t current_rx_seq; ///< Sequence number of last packet received
+ uint8_t current_tx_seq; ///< Sequence number of last packet sent
+ uint16_t packet_rx_success_count; ///< Received packets
+ uint16_t packet_rx_drop_count; ///< Number of packet drops
+ uint8_t flags; ///< MAVLINK_STATUS_FLAG_*
+ uint8_t signature_wait; ///< number of signature bytes left to receive
+ struct __mavlink_signing *signing; ///< optional signing state
+ struct __mavlink_signing_streams *signing_streams; ///< global record of stream timestamps
+} mavlink_status_t;
+
+/*
+ a callback function to allow for accepting unsigned packets
+ */
+typedef bool (*mavlink_accept_unsigned_t)(const mavlink_status_t *status, uint32_t msgid);
+
+/*
+ flags controlling signing
+ */
+#define MAVLINK_SIGNING_FLAG_SIGN_OUTGOING 1
+
+/*
+ state of MAVLink signing for this channel
+ */
+typedef struct __mavlink_signing {
+ uint8_t flags; ///< MAVLINK_SIGNING_FLAG_*
+ uint8_t link_id;
+ uint64_t timestamp;
+ uint8_t secret_key[32];
+ mavlink_accept_unsigned_t accept_unsigned_callback;
+} mavlink_signing_t;
+
+/*
+ timestamp state of each logical signing stream. This needs to be the same structure for all
+ connections in order to be secure
+ */
+#ifndef MAVLINK_MAX_SIGNING_STREAMS
+#define MAVLINK_MAX_SIGNING_STREAMS 16
+#endif
+typedef struct __mavlink_signing_streams {
+ uint16_t num_signing_streams;
+ struct __mavlink_signing_stream {
+ uint8_t link_id;
+ uint8_t sysid;
+ uint8_t compid;
+ uint8_t timestamp_bytes[6];
+ } stream[MAVLINK_MAX_SIGNING_STREAMS];
+} mavlink_signing_streams_t;
+
+
+#define MAVLINK_BIG_ENDIAN 0
+#define MAVLINK_LITTLE_ENDIAN 1
+
+#define MAV_MSG_ENTRY_FLAG_HAVE_TARGET_SYSTEM 1
+#define MAV_MSG_ENTRY_FLAG_HAVE_TARGET_COMPONENT 2
+
+/*
+ entry in table of information about each message type
+ */
+typedef struct __mavlink_msg_entry {
+ uint32_t msgid;
+ uint8_t crc_extra;
+ uint8_t msg_len;
+ uint8_t flags; // MAV_MSG_ENTRY_FLAG_*
+ uint8_t target_system_ofs; // payload offset to target_system, or 0
+ uint8_t target_component_ofs; // payload offset to target_component, or 0
+} mavlink_msg_entry_t;
+
+/*
+ incompat_flags bits
+ */
+#define MAVLINK_IFLAG_SIGNED 0x01
+#define MAVLINK_IFLAG_MASK 0x01 // mask of all understood bits
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/protocol.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/protocol.h
new file mode 100644
index 000000000..20d218f24
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/C/include_v2.0/protocol.h
@@ -0,0 +1,334 @@
+#pragma once
+
+#include "string.h"
+#include "mavlink_types.h"
+
+/*
+ If you want MAVLink on a system that is native big-endian,
+ you need to define NATIVE_BIG_ENDIAN
+*/
+#ifdef NATIVE_BIG_ENDIAN
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN == MAVLINK_LITTLE_ENDIAN)
+#else
+# define MAVLINK_NEED_BYTE_SWAP (MAVLINK_ENDIAN != MAVLINK_LITTLE_ENDIAN)
+#endif
+
+#ifndef MAVLINK_STACK_BUFFER
+#define MAVLINK_STACK_BUFFER 0
+#endif
+
+#ifndef MAVLINK_AVOID_GCC_STACK_BUG
+# define MAVLINK_AVOID_GCC_STACK_BUG defined(__GNUC__)
+#endif
+
+#ifndef MAVLINK_ASSERT
+#define MAVLINK_ASSERT(x)
+#endif
+
+#ifndef MAVLINK_START_UART_SEND
+#define MAVLINK_START_UART_SEND(chan, length)
+#endif
+
+#ifndef MAVLINK_END_UART_SEND
+#define MAVLINK_END_UART_SEND(chan, length)
+#endif
+
+/* option to provide alternative implementation of mavlink_helpers.h */
+#ifdef MAVLINK_SEPARATE_HELPERS
+
+ #define MAVLINK_HELPER
+
+ /* decls in sync with those in mavlink_helpers.h */
+ #ifndef MAVLINK_GET_CHANNEL_STATUS
+ MAVLINK_HELPER mavlink_status_t* mavlink_get_channel_status(uint8_t chan);
+ #endif
+ MAVLINK_HELPER void mavlink_reset_channel_status(uint8_t chan);
+ MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t chan, uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+ MAVLINK_HELPER void _mav_finalize_message_chan_send(mavlink_channel_t chan, uint32_t msgid, const char *packet,
+ uint8_t min_length, uint8_t length, uint8_t crc_extra);
+ #endif
+ MAVLINK_HELPER uint16_t mavlink_msg_to_send_buffer(uint8_t *buffer, const mavlink_message_t *msg);
+ MAVLINK_HELPER void mavlink_start_checksum(mavlink_message_t* msg);
+ MAVLINK_HELPER void mavlink_update_checksum(mavlink_message_t* msg, uint8_t c);
+ MAVLINK_HELPER uint8_t mavlink_frame_char_buffer(mavlink_message_t* rxmsg,
+ mavlink_status_t* status,
+ uint8_t c,
+ mavlink_message_t* r_message,
+ mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t mavlink_frame_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t mavlink_parse_char(uint8_t chan, uint8_t c, mavlink_message_t* r_message, mavlink_status_t* r_mavlink_status);
+ MAVLINK_HELPER uint8_t put_bitfield_n_by_index(int32_t b, uint8_t bits, uint8_t packet_index, uint8_t bit_index,
+ uint8_t* r_bit_index, uint8_t* buffer);
+ MAVLINK_HELPER const mavlink_msg_entry_t *mavlink_get_msg_entry(uint32_t msgid);
+ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+ MAVLINK_HELPER void _mavlink_send_uart(mavlink_channel_t chan, const char *buf, uint16_t len);
+ MAVLINK_HELPER void _mavlink_resend_uart(mavlink_channel_t chan, const mavlink_message_t *msg);
+ #endif
+
+#else
+
+ #define MAVLINK_HELPER static inline
+ #include "mavlink_helpers.h"
+
+#endif // MAVLINK_SEPARATE_HELPERS
+
+
+/**
+ * @brief Get the required buffer size for this message
+ */
+static inline uint16_t mavlink_msg_get_send_buffer_length(const mavlink_message_t* msg)
+{
+ if (msg->magic == MAVLINK_STX_MAVLINK1) {
+ return msg->len + MAVLINK_CORE_HEADER_MAVLINK1_LEN+1 + 2;
+ }
+ uint16_t signature_len = (msg->incompat_flags & MAVLINK_IFLAG_SIGNED)?MAVLINK_SIGNATURE_BLOCK_LEN:0;
+ return msg->len + MAVLINK_NUM_NON_PAYLOAD_BYTES + signature_len;
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+static inline void byte_swap_2(char *dst, const char *src)
+{
+ dst[0] = src[1];
+ dst[1] = src[0];
+}
+static inline void byte_swap_4(char *dst, const char *src)
+{
+ dst[0] = src[3];
+ dst[1] = src[2];
+ dst[2] = src[1];
+ dst[3] = src[0];
+}
+static inline void byte_swap_8(char *dst, const char *src)
+{
+ dst[0] = src[7];
+ dst[1] = src[6];
+ dst[2] = src[5];
+ dst[3] = src[4];
+ dst[4] = src[3];
+ dst[5] = src[2];
+ dst[6] = src[1];
+ dst[7] = src[0];
+}
+#elif !MAVLINK_ALIGNED_FIELDS
+static inline void byte_copy_2(char *dst, const char *src)
+{
+ dst[0] = src[0];
+ dst[1] = src[1];
+}
+static inline void byte_copy_4(char *dst, const char *src)
+{
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ dst[3] = src[3];
+}
+static inline void byte_copy_8(char *dst, const char *src)
+{
+ memcpy(dst, src, 8);
+}
+#endif
+
+#define _mav_put_uint8_t(buf, wire_offset, b) buf[wire_offset] = (uint8_t)b
+#define _mav_put_int8_t(buf, wire_offset, b) buf[wire_offset] = (int8_t)b
+#define _mav_put_char(buf, wire_offset, b) buf[wire_offset] = b
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b) byte_swap_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b) byte_swap_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b) byte_swap_8(&buf[wire_offset], (const char *)&b)
+#elif !MAVLINK_ALIGNED_FIELDS
+#define _mav_put_uint16_t(buf, wire_offset, b) byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int16_t(buf, wire_offset, b) byte_copy_2(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint32_t(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int32_t(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_uint64_t(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_int64_t(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#define _mav_put_float(buf, wire_offset, b) byte_copy_4(&buf[wire_offset], (const char *)&b)
+#define _mav_put_double(buf, wire_offset, b) byte_copy_8(&buf[wire_offset], (const char *)&b)
+#else
+#define _mav_put_uint16_t(buf, wire_offset, b) *(uint16_t *)&buf[wire_offset] = b
+#define _mav_put_int16_t(buf, wire_offset, b) *(int16_t *)&buf[wire_offset] = b
+#define _mav_put_uint32_t(buf, wire_offset, b) *(uint32_t *)&buf[wire_offset] = b
+#define _mav_put_int32_t(buf, wire_offset, b) *(int32_t *)&buf[wire_offset] = b
+#define _mav_put_uint64_t(buf, wire_offset, b) *(uint64_t *)&buf[wire_offset] = b
+#define _mav_put_int64_t(buf, wire_offset, b) *(int64_t *)&buf[wire_offset] = b
+#define _mav_put_float(buf, wire_offset, b) *(float *)&buf[wire_offset] = b
+#define _mav_put_double(buf, wire_offset, b) *(double *)&buf[wire_offset] = b
+#endif
+
+/*
+ like memcpy(), but if src is NULL, do a memset to zero
+*/
+static inline void mav_array_memcpy(void *dest, const void *src, size_t n)
+{
+ if (src == NULL) {
+ memset(dest, 0, n);
+ } else {
+ memcpy(dest, src, n);
+ }
+}
+
+/*
+ * Place a char array into a buffer
+ */
+static inline void _mav_put_char_array(char *buf, uint8_t wire_offset, const char *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a uint8_t array into a buffer
+ */
+static inline void _mav_put_uint8_t_array(char *buf, uint8_t wire_offset, const uint8_t *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+/*
+ * Place a int8_t array into a buffer
+ */
+static inline void _mav_put_int8_t_array(char *buf, uint8_t wire_offset, const int8_t *b, uint8_t array_length)
+{
+ mav_array_memcpy(&buf[wire_offset], b, array_length);
+
+}
+
+#if MAVLINK_NEED_BYTE_SWAP
+#define _MAV_PUT_ARRAY(TYPE, V) \
+static inline void _mav_put_ ## TYPE ##_array(char *buf, uint8_t wire_offset, const TYPE *b, uint8_t array_length) \
+{ \
+ if (b == NULL) { \
+ memset(&buf[wire_offset], 0, array_length*sizeof(TYPE)); \
+ } else { \
+ uint16_t i; \
+ for (i=0; i MAX_PAYLOAD_SIZE) {
+ payload = ByteBuffer.allocate(MAX_PAYLOAD_SIZE);
+ } else {
+ payload = ByteBuffer.allocate(payloadSize);
+ }
+ }
+
+ public ByteBuffer getData() {
+ return payload;
+ }
+
+ public int size() {
+ return payload.position();
+ }
+
+ public void add(byte c) {
+ payload.put(c);
+ }
+
+ public void resetIndex() {
+ index = 0;
+ }
+
+ public byte getByte() {
+ byte result = 0;
+ result |= (payload.get(index + 0) & 0xFF);
+ index += 1;
+ return result;
+ }
+
+ public short getUnsignedByte(){
+ short result = 0;
+ result |= payload.get(index + 0) & 0xFF;
+ index+= 1;
+ return result;
+ }
+
+ public short getShort() {
+ short result = 0;
+ result |= (payload.get(index + 1) & 0xFF) << 8;
+ result |= (payload.get(index + 0) & 0xFF);
+ index += 2;
+ return result;
+ }
+
+ public int getUnsignedShort(){
+ int result = 0;
+ result |= (payload.get(index + 1) & 0xFF) << 8;
+ result |= (payload.get(index + 0) & 0xFF);
+ index += 2;
+ return result;
+ }
+
+ public int getInt() {
+ int result = 0;
+ result |= (payload.get(index + 3) & 0xFF) << 24;
+ result |= (payload.get(index + 2) & 0xFF) << 16;
+ result |= (payload.get(index + 1) & 0xFF) << 8;
+ result |= (payload.get(index + 0) & 0xFF);
+ index += 4;
+ return result;
+ }
+
+ public long getUnsignedInt(){
+ long result = 0;
+ result |= (payload.get(index + 3) & 0xFFL) << 24;
+ result |= (payload.get(index + 2) & 0xFFL) << 16;
+ result |= (payload.get(index + 1) & 0xFFL) << 8;
+ result |= (payload.get(index + 0) & 0xFFL);
+ index += 4;
+ return result;
+ }
+
+ public long getLong() {
+ long result = 0;
+ result |= (payload.get(index + 7) & 0xFFL) << 56;
+ result |= (payload.get(index + 6) & 0xFFL) << 48;
+ result |= (payload.get(index + 5) & 0xFFL) << 40;
+ result |= (payload.get(index + 4) & 0xFFL) << 32;
+ result |= (payload.get(index + 3) & 0xFFL) << 24;
+ result |= (payload.get(index + 2) & 0xFFL) << 16;
+ result |= (payload.get(index + 1) & 0xFFL) << 8;
+ result |= (payload.get(index + 0) & 0xFFL);
+ index += 8;
+ return result;
+ }
+
+ public long getUnsignedLong(){
+ return getLong();
+ }
+
+ public long getLongReverse() {
+ long result = 0;
+ result |= (payload.get(index + 0) & 0xFFL) << 56;
+ result |= (payload.get(index + 1) & 0xFFL) << 48;
+ result |= (payload.get(index + 2) & 0xFFL) << 40;
+ result |= (payload.get(index + 3) & 0xFFL) << 32;
+ result |= (payload.get(index + 4) & 0xFFL) << 24;
+ result |= (payload.get(index + 5) & 0xFFL) << 16;
+ result |= (payload.get(index + 6) & 0xFFL) << 8;
+ result |= (payload.get(index + 7) & 0xFFL);
+ index += 8;
+ return result;
+ }
+
+ public float getFloat() {
+ return Float.intBitsToFloat(getInt());
+ }
+
+ public void putByte(byte data) {
+ add(data);
+ }
+
+ public void putUnsignedByte(short data){
+ if(data < UNSIGNED_BYTE_MIN_VALUE || data > UNSIGNED_BYTE_MAX_VALUE){
+ throw new IllegalArgumentException("Value is outside of the range of an unsigned byte: " + data);
+ }
+
+ putByte((byte) data);
+ }
+
+ public void putShort(short data) {
+ add((byte) (data >> 0));
+ add((byte) (data >> 8));
+ }
+
+ public void putUnsignedShort(int data){
+ if(data < UNSIGNED_SHORT_MIN_VALUE || data > UNSIGNED_SHORT_MAX_VALUE){
+ throw new IllegalArgumentException("Value is outside of the range of an unsigned short: " + data);
+ }
+
+ putShort((short) data);
+ }
+
+ public void putInt(int data) {
+ add((byte) (data >> 0));
+ add((byte) (data >> 8));
+ add((byte) (data >> 16));
+ add((byte) (data >> 24));
+ }
+
+ public void putUnsignedInt(long data){
+ if(data < UNSIGNED_INT_MIN_VALUE || data > UNSIGNED_INT_MAX_VALUE){
+ throw new IllegalArgumentException("Value is outside of the range of an unsigned int: " + data);
+ }
+
+ putInt((int) data);
+ }
+
+ public void putLong(long data) {
+ add((byte) (data >> 0));
+ add((byte) (data >> 8));
+ add((byte) (data >> 16));
+ add((byte) (data >> 24));
+ add((byte) (data >> 32));
+ add((byte) (data >> 40));
+ add((byte) (data >> 48));
+ add((byte) (data >> 56));
+ }
+
+ public void putUnsignedLong(long data){
+ if(data < UNSIGNED_LONG_MIN_VALUE){
+ throw new IllegalArgumentException("Value is outside of the range of an unsigned long: " + data);
+ }
+
+ putLong(data);
+ }
+
+ public void putFloat(float data) {
+ putInt(Float.floatToIntBits(data));
+ }
+
+}
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Messages/MAVLinkStats.java b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Messages/MAVLinkStats.java
new file mode 100644
index 000000000..7655a5b3b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Messages/MAVLinkStats.java
@@ -0,0 +1,151 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+package com.MAVLink.Messages;
+
+import com.MAVLink.MAVLinkPacket;
+import com.MAVLink.common.msg_radio_status;
+
+/**
+ * Storage for MAVLink Packet and Error statistics
+ *
+ */
+public class MAVLinkStats /* implements Serializable */{
+
+ public int receivedPacketCount; // total recieved packet count for all sources
+
+ public int crcErrorCount;
+
+ public int lostPacketCount; // total lost packet count for all sources
+
+ public boolean ignoreRadioPackets;
+
+ // stats are nil for a system id until a packet has been received from a system
+ public SystemStat[] systemStats; // stats for each system that is known
+
+ public MAVLinkStats() {
+ this(false);
+ }
+
+ public MAVLinkStats(boolean ignoreRadioPackets) {
+ this.ignoreRadioPackets = ignoreRadioPackets;
+ resetStats();
+ }
+
+ /**
+ * Check the new received packet to see if has lost someone between this and
+ * the last packet
+ *
+ * @param packet
+ * Packet that should be checked
+ */
+ public void newPacket(MAVLinkPacket packet) {
+ if (ignoreRadioPackets && packet.msgid == msg_radio_status.MAVLINK_MSG_ID_RADIO_STATUS) {
+ return;
+ }
+
+ if (systemStats[packet.sysid] == null) {
+ // only allocate stats for systems that exsist on the network
+ systemStats[packet.sysid] = new SystemStat();
+ }
+ lostPacketCount += systemStats[packet.sysid].newPacket(packet);
+ receivedPacketCount++;
+ }
+
+ /**
+ * Called when a CRC error happens on the parser
+ */
+ public void crcError() {
+ crcErrorCount++;
+ }
+
+ public void resetStats() {
+ crcErrorCount = 0;
+ lostPacketCount = 0;
+ receivedPacketCount = 0;
+ systemStats = new SystemStat[256];
+ }
+
+ // stat structure for every system id
+ private class SystemStat {
+ public int lostPacketCount; // the lost count for this source
+ public int receivedPacketCount;
+
+ // stats are nil for a component id until a packet has been received from a system
+ public ComponentStat[] componentStats; // stats for each component that is known
+
+ public SystemStat() {
+ resetStats();
+ }
+
+ public int newPacket(MAVLinkPacket packet) {
+ int newLostPackets = 0;
+ if (componentStats[packet.compid] == null) {
+ // only allocate stats for systems that exsist on the network
+ componentStats[packet.compid] = new ComponentStat();
+ }
+ newLostPackets = componentStats[packet.compid].newPacket(packet);
+ lostPacketCount += newLostPackets;
+ receivedPacketCount++;
+ return newLostPackets;
+ }
+
+ public void resetStats() {
+ lostPacketCount = 0;
+ receivedPacketCount = 0;
+ componentStats = new ComponentStat[256];
+ }
+ }
+
+ // stat structure for every system id
+ private class ComponentStat {
+ public int lastPacketSeq;
+ public int lostPacketCount; // the lost count for this source
+ public int receivedPacketCount;
+
+ public ComponentStat() {
+ resetStats();
+ }
+
+ public int newPacket(MAVLinkPacket packet) {
+ int newLostPackets = 0;
+ if (hasLostPackets(packet)) {
+ newLostPackets = updateLostPacketCount(packet);
+ }
+ lastPacketSeq = packet.seq;
+ advanceLastPacketSequence(packet.seq);
+ receivedPacketCount++;
+ return newLostPackets;
+ }
+
+ public void resetStats() {
+ lastPacketSeq = -1;
+ lostPacketCount = 0;
+ receivedPacketCount = 0;
+ }
+
+ private int updateLostPacketCount(MAVLinkPacket packet) {
+ int lostPackets;
+ if (packet.seq - lastPacketSeq < 0) {
+ lostPackets = (packet.seq - lastPacketSeq) + 255;
+ } else {
+ lostPackets = (packet.seq - lastPacketSeq);
+ }
+ lostPacketCount += lostPackets;
+ return lostPackets;
+ }
+
+ private void advanceLastPacketSequence(int lastSeq) {
+ // wrap from 255 to 0 if necessary
+ lastPacketSeq = (lastSeq + 1) & 0xFF;
+ }
+
+ private boolean hasLostPackets(MAVLinkPacket packet) {
+ return lastPacketSeq >= 0 && packet.seq != lastPacketSeq;
+ }
+ }
+
+}
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Parser.java b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Parser.java
new file mode 100644
index 000000000..68c4cdb75
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/java/lib/Parser.java
@@ -0,0 +1,140 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+package com.MAVLink;
+
+import com.MAVLink.MAVLinkPacket;
+import com.MAVLink.Messages.MAVLinkStats;
+
+public class Parser {
+
+ /**
+ * States from the parsing state machine
+ */
+ enum MAV_states {
+ MAVLINK_PARSE_STATE_UNINIT, MAVLINK_PARSE_STATE_IDLE, MAVLINK_PARSE_STATE_GOT_STX, MAVLINK_PARSE_STATE_GOT_LENGTH, MAVLINK_PARSE_STATE_GOT_SEQ, MAVLINK_PARSE_STATE_GOT_SYSID, MAVLINK_PARSE_STATE_GOT_COMPID, MAVLINK_PARSE_STATE_GOT_MSGID, MAVLINK_PARSE_STATE_GOT_CRC1, MAVLINK_PARSE_STATE_GOT_PAYLOAD
+ }
+
+ MAV_states state = MAV_states.MAVLINK_PARSE_STATE_UNINIT;
+
+ static boolean msg_received;
+
+ public MAVLinkStats stats;
+ private MAVLinkPacket m;
+
+ public Parser() {
+ this(false);
+ }
+
+ public Parser(boolean ignoreRadioPacketStats) {
+ stats = new MAVLinkStats(ignoreRadioPacketStats);
+ }
+
+ /**
+ * This is a convenience function which handles the complete MAVLink
+ * parsing. the function will parse one byte at a time and return the
+ * complete packet once it could be successfully decoded. Checksum and other
+ * failures will be silently ignored.
+ *
+ * @param c
+ * The char to parse
+ */
+ public MAVLinkPacket mavlink_parse_char(int c) {
+ msg_received = false;
+
+ switch (state) {
+ case MAVLINK_PARSE_STATE_UNINIT:
+ case MAVLINK_PARSE_STATE_IDLE:
+
+ if (c == MAVLinkPacket.MAVLINK_STX) {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_STX;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_STX:
+ if (msg_received) {
+ msg_received = false;
+ state = MAV_states.MAVLINK_PARSE_STATE_IDLE;
+ } else {
+ m = new MAVLinkPacket(c);
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_LENGTH;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_LENGTH:
+ m.seq = c;
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_SEQ;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SEQ:
+ m.sysid = c;
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_SYSID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SYSID:
+ m.compid = c;
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_COMPID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_COMPID:
+ m.msgid = c;
+ if (m.len == 0) {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ } else {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_MSGID;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID:
+ m.payload.add((byte) c);
+ if (m.payloadIsFilled()) {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_PAYLOAD:
+ m.generateCRC();
+ // Check first checksum byte
+ if (c != m.crc.getLSB()) {
+ msg_received = false;
+ state = MAV_states.MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLinkPacket.MAVLINK_STX) {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_STX;
+ m.crc.start_checksum();
+ }
+ stats.crcError();
+ } else {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_CRC1;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_CRC1:
+ // Check second checksum byte
+ if (c != m.crc.getMSB()) {
+ msg_received = false;
+ state = MAV_states.MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLinkPacket.MAVLINK_STX) {
+ state = MAV_states.MAVLINK_PARSE_STATE_GOT_STX;
+ m.crc.start_checksum();
+ }
+ stats.crcError();
+ } else { // Successfully received the message
+ stats.newPacket(m);
+ msg_received = true;
+ state = MAV_states.MAVLINK_PARSE_STATE_IDLE;
+ }
+
+ break;
+
+ }
+ if (msg_received) {
+ return m;
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavcrc.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavcrc.py
new file mode 100644
index 000000000..3458f09cc
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavcrc.py
@@ -0,0 +1,29 @@
+'''MAVLink X25 CRC code'''
+
+
+class x25crc(object):
+ '''x25 CRC - based on checksum.h from mavlink library'''
+ def __init__(self, buf=None):
+ self.crc = 0xffff
+ if buf is not None:
+ if isinstance(buf, str):
+ self.accumulate_str(buf)
+ else:
+ self.accumulate(buf)
+
+ def accumulate(self, buf):
+ '''add in some more bytes'''
+ accum = self.crc
+ for b in buf:
+ tmp = b ^ (accum & 0xff)
+ tmp = (tmp ^ (tmp<<4)) & 0xFF
+ accum = (accum>>8) ^ (tmp<<8) ^ (tmp<<3) ^ (tmp>>4)
+ self.crc = accum
+
+ def accumulate_str(self, buf):
+ '''add in some more bytes'''
+ accum = self.crc
+ import array
+ bytes = array.array('B')
+ bytes.fromstring(buf)
+ self.accumulate(bytes)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen.py
new file mode 100755
index 000000000..97ae2099e
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen.py
@@ -0,0 +1,207 @@
+#!/usr/bin/env python
+
+'''
+parse a MAVLink protocol XML file and generate a python implementation
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+
+'''
+
+from __future__ import print_function
+import sys, textwrap, os, copy
+import re
+from . import mavparse
+
+# XSD schema file
+schemaFile = os.path.join(os.path.dirname(os.path.realpath(__file__)), "mavschema.xsd")
+
+# Set defaults for generating MAVLink code
+DEFAULT_WIRE_PROTOCOL = mavparse.PROTOCOL_1_0
+DEFAULT_LANGUAGE = 'Python'
+DEFAULT_ERROR_LIMIT = 200
+DEFAULT_VALIDATE = True
+
+# List the supported languages. This is done globally because it's used by the GUI wrapper too
+supportedLanguages = ["C", "CS", "JavaScript", "Python", "WLua", "ObjC", "Swift", "Java"]
+
+
+def mavgen(opts, args):
+ """Generate mavlink message formatters and parsers (C and Python ) using options
+ and args where args are a list of xml files. This function allows python
+ scripts under Windows to control mavgen using the same interface as
+ shell scripts under Unix"""
+
+ xml = []
+
+ # Enable validation by default, disabling it if explicitly requested
+ if opts.validate:
+ try:
+ from lxml import etree
+ with open(schemaFile, 'r') as f:
+ xmlschema_root = etree.parse(f)
+ xmlschema = etree.XMLSchema(xmlschema_root)
+ except:
+ print("WARNING: Unable to load XML validator libraries. XML validation will not be performed", file=sys.stderr)
+ opts.validate = False
+
+ def mavgen_validate(xmlfile):
+ """Uses lxml to validate an XML file. We define mavgen_validate
+ here because it relies on the XML libs that were loaded in mavgen(), so it can't be called standalone"""
+ xmlvalid = True
+ try:
+ with open(xmlfile, 'r') as f:
+ xmldocument = etree.parse(f)
+ xmlschema.assertValid(xmldocument)
+ forbidden_names_re = re.compile("^(break$|case$|class$|catch$|const$|continue$|debugger$|default$|delete$|do$|else$|\
+ export$|extends$|finally$|for$|function$|if$|import$|in$|instanceof$|let$|new$|\
+ return$|super$|switch$|this$|throw$|try$|typeof$|var$|void$|while$|with$|yield$|\
+ enum$|await$|implements$|package$|protected$|static$|interface$|private$|public$|\
+ abstract$|boolean$|byte$|char$|double$|final$|float$|goto$|int$|long$|native$|\
+ short$|synchronized$|transient$|volatile$).*", re.IGNORECASE)
+ for element in xmldocument.iter('enum', 'entry', 'message', 'field'):
+ if forbidden_names_re.search(element.get('name')):
+ print("Validation error:", file=sys.stderr)
+ print("Element : %s at line : %s contains forbidden word" % (element.tag, element.sourceline), file=sys.stderr)
+ xmlvalid = False
+
+ return xmlvalid
+ except etree.XMLSchemaError:
+ return False
+
+ # Process all XML files, validating them as necessary.
+ for fname in args:
+ if opts.validate:
+ print("Validating %s" % fname)
+ if not mavgen_validate(fname):
+ return False
+ else:
+ print("Validation skipped for %s." % fname)
+
+ print("Parsing %s" % fname)
+ xml.append(mavparse.MAVXML(fname, opts.wire_protocol))
+
+ # expand includes
+ for x in xml[:]:
+ for i in x.include:
+ fname = os.path.join(os.path.dirname(x.filename), i)
+
+ # Validate XML file with XSD file if possible.
+ if opts.validate:
+ print("Validating %s" % fname)
+ if not mavgen_validate(fname):
+ return False
+ else:
+ print("Validation skipped for %s." % fname)
+
+ # Parsing
+ print("Parsing %s" % fname)
+ xml.append(mavparse.MAVXML(fname, opts.wire_protocol))
+
+ # include message lengths and CRCs too
+ x.message_crcs.update(xml[-1].message_crcs)
+ x.message_lengths.update(xml[-1].message_lengths)
+ x.message_min_lengths.update(xml[-1].message_min_lengths)
+ x.message_flags.update(xml[-1].message_flags)
+ x.message_target_system_ofs.update(xml[-1].message_target_system_ofs)
+ x.message_target_component_ofs.update(xml[-1].message_target_component_ofs)
+ x.message_names.update(xml[-1].message_names)
+ x.largest_payload = max(x.largest_payload, xml[-1].largest_payload)
+
+ # work out max payload size across all includes
+ largest_payload = 0
+ for x in xml:
+ if x.largest_payload > largest_payload:
+ largest_payload = x.largest_payload
+ for x in xml:
+ x.largest_payload = largest_payload
+
+ if mavparse.check_duplicates(xml):
+ sys.exit(1)
+
+ print("Found %u MAVLink message types in %u XML files" % (
+ mavparse.total_msgs(xml), len(xml)))
+
+ # Convert language option to lowercase and validate
+ opts.language = opts.language.lower()
+ if opts.language == 'python':
+ from . import mavgen_python
+ mavgen_python.generate(opts.output, xml)
+ elif opts.language == 'c':
+ from . import mavgen_c
+ mavgen_c.generate(opts.output, xml)
+ elif opts.language == 'wlua':
+ from . import mavgen_wlua
+ mavgen_wlua.generate(opts.output, xml)
+ elif opts.language == 'cs':
+ from . import mavgen_cs
+ mavgen_cs.generate(opts.output, xml)
+ elif opts.language == 'javascript':
+ from . import mavgen_javascript
+ mavgen_javascript.generate(opts.output, xml)
+ elif opts.language == 'objc':
+ from . import mavgen_objc
+ mavgen_objc.generate(opts.output, xml)
+ elif opts.language == 'swift':
+ from . import mavgen_swift
+ mavgen_swift.generate(opts.output, xml)
+ elif opts.language == 'java':
+ from . import mavgen_java
+ mavgen_java.generate(opts.output, xml)
+ else:
+ print("Unsupported language %s" % opts.language)
+
+ return True
+
+# build all the dialects in the dialects subpackage
+class Opts:
+ def __init__(self, output, wire_protocol=DEFAULT_WIRE_PROTOCOL, language=DEFAULT_LANGUAGE, validate=DEFAULT_VALIDATE, error_limit=DEFAULT_ERROR_LIMIT):
+ self.wire_protocol = wire_protocol
+ self.error_limit = error_limit
+ self.language = language
+ self.output = output
+ self.validate = validate
+
+def mavgen_python_dialect(dialect, wire_protocol):
+ '''generate the python code on the fly for a MAVLink dialect'''
+ dialects = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'dialects')
+ mdef = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', 'message_definitions')
+ if wire_protocol == mavparse.PROTOCOL_0_9:
+ py = os.path.join(dialects, 'v09', dialect + '.py')
+ xml = os.path.join(dialects, 'v09', dialect + '.xml')
+ if not os.path.exists(xml):
+ xml = os.path.join(mdef, 'v0.9', dialect + '.xml')
+ elif wire_protocol == mavparse.PROTOCOL_1_0:
+ py = os.path.join(dialects, 'v10', dialect + '.py')
+ xml = os.path.join(dialects, 'v10', dialect + '.xml')
+ if not os.path.exists(xml):
+ xml = os.path.join(mdef, 'v1.0', dialect + '.xml')
+ else:
+ py = os.path.join(dialects, 'v20', dialect + '.py')
+ xml = os.path.join(dialects, 'v20', dialect + '.xml')
+ if not os.path.exists(xml):
+ xml = os.path.join(mdef, 'v1.0', dialect + '.xml')
+ opts = Opts(py, wire_protocol)
+
+ # Python 2 to 3 compatibility
+ try:
+ import StringIO as io
+ except ImportError:
+ import io
+
+ # throw away stdout while generating
+ stdout_saved = sys.stdout
+ sys.stdout = io.StringIO()
+ try:
+ xml = os.path.relpath(xml)
+ if not mavgen(opts, [xml]):
+ sys.stdout = stdout_saved
+ return False
+ except Exception:
+ sys.stdout = stdout_saved
+ raise
+ sys.stdout = stdout_saved
+ return True
+
+if __name__ == "__main__":
+ raise DeprecationWarning("Executable was moved to pymavlink.tools.mavgen")
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_c.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_c.py
new file mode 100644
index 000000000..638726c5c
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_c.py
@@ -0,0 +1,696 @@
+#!/usr/bin/env python
+'''
+parse a MAVLink protocol XML file and generate a C implementation
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import sys, textwrap, os, time
+from . import mavparse, mavtemplate
+
+t = mavtemplate.MAVTemplate()
+
+def generate_version_h(directory, xml):
+ '''generate version.h'''
+ f = open(os.path.join(directory, "version.h"), mode='w')
+ t.write(f,'''
+/** @file
+ * @brief MAVLink comm protocol built from ${basename}.xml
+ * @see http://mavlink.org
+ */
+#pragma once
+
+#ifndef MAVLINK_VERSION_H
+#define MAVLINK_VERSION_H
+
+#define MAVLINK_BUILD_DATE "${parse_time}"
+#define MAVLINK_WIRE_PROTOCOL_VERSION "${wire_protocol_version}"
+#define MAVLINK_MAX_DIALECT_PAYLOAD_SIZE ${largest_payload}
+
+#endif // MAVLINK_VERSION_H
+''', xml)
+ f.close()
+
+def generate_mavlink_h(directory, xml):
+ '''generate mavlink.h'''
+ f = open(os.path.join(directory, "mavlink.h"), mode='w')
+ t.write(f,'''
+/** @file
+ * @brief MAVLink comm protocol built from ${basename}.xml
+ * @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_H
+#define MAVLINK_H
+
+#define MAVLINK_PRIMARY_XML_IDX ${xml_idx}
+
+#ifndef MAVLINK_STX
+#define MAVLINK_STX ${protocol_marker}
+#endif
+
+#ifndef MAVLINK_ENDIAN
+#define MAVLINK_ENDIAN ${mavlink_endian}
+#endif
+
+#ifndef MAVLINK_ALIGNED_FIELDS
+#define MAVLINK_ALIGNED_FIELDS ${aligned_fields_define}
+#endif
+
+#ifndef MAVLINK_CRC_EXTRA
+#define MAVLINK_CRC_EXTRA ${crc_extra_define}
+#endif
+
+#ifndef MAVLINK_COMMAND_24BIT
+#define MAVLINK_COMMAND_24BIT ${command_24bit_define}
+#endif
+
+#include "version.h"
+#include "${basename}.h"
+
+#endif // MAVLINK_H
+''', xml)
+ f.close()
+
+def generate_main_h(directory, xml):
+ '''generate main header per XML file'''
+ f = open(os.path.join(directory, xml.basename + ".h"), mode='w')
+ t.write(f, '''
+/** @file
+ * @brief MAVLink comm protocol generated from ${basename}.xml
+ * @see http://mavlink.org
+ */
+#pragma once
+#ifndef MAVLINK_${basename_upper}_H
+#define MAVLINK_${basename_upper}_H
+
+#ifndef MAVLINK_H
+ #error Wrong include order: MAVLINK_${basename_upper}.H MUST NOT BE DIRECTLY USED. Include mavlink.h from the same directory instead or set ALL AND EVERY defines from MAVLINK.H manually accordingly, including the #define MAVLINK_H call.
+#endif
+
+#undef MAVLINK_THIS_XML_IDX
+#define MAVLINK_THIS_XML_IDX ${xml_idx}
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// MESSAGE LENGTHS AND CRCS
+
+#ifndef MAVLINK_MESSAGE_LENGTHS
+#define MAVLINK_MESSAGE_LENGTHS {${message_lengths_array}}
+#endif
+
+#ifndef MAVLINK_MESSAGE_CRCS
+#define MAVLINK_MESSAGE_CRCS {${message_crcs_array}}
+#endif
+
+#include "../protocol.h"
+
+#define MAVLINK_ENABLED_${basename_upper}
+
+// ENUM DEFINITIONS
+
+${{enum:
+/** @brief ${description} */
+#ifndef HAVE_ENUM_${name}
+#define HAVE_ENUM_${name}
+typedef enum ${name}
+{
+${{entry: ${name}=${value}, /* ${description} |${{param:${description}| }} */
+}}
+} ${name};
+#endif
+}}
+
+// MAVLINK VERSION
+
+#ifndef MAVLINK_VERSION
+#define MAVLINK_VERSION ${version}
+#endif
+
+#if (MAVLINK_VERSION == 0)
+#undef MAVLINK_VERSION
+#define MAVLINK_VERSION ${version}
+#endif
+
+// MESSAGE DEFINITIONS
+${{message:#include "./mavlink_msg_${name_lower}.h"
+}}
+
+// base include
+${{include_list:#include "../${base}/${base}.h"
+}}
+
+#undef MAVLINK_THIS_XML_IDX
+#define MAVLINK_THIS_XML_IDX ${xml_idx}
+
+#if MAVLINK_THIS_XML_IDX == MAVLINK_PRIMARY_XML_IDX
+# define MAVLINK_MESSAGE_INFO {${message_info_array}}
+# if MAVLINK_COMMAND_24BIT
+# include "../mavlink_get_info.h"
+# endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+#endif // MAVLINK_${basename_upper}_H
+''', xml)
+
+ f.close()
+
+
+def generate_message_h(directory, m):
+ '''generate per-message header for a XML file'''
+ f = open(os.path.join(directory, 'mavlink_msg_%s.h' % m.name_lower), mode='w')
+ t.write(f, '''
+#pragma once
+// MESSAGE ${name} PACKING
+
+#define MAVLINK_MSG_ID_${name} ${id}
+
+MAVPACKED(
+typedef struct __mavlink_${name_lower}_t {
+${{ordered_fields: ${type} ${name}${array_suffix}; /*< ${description}*/
+}}
+}) mavlink_${name_lower}_t;
+
+#define MAVLINK_MSG_ID_${name}_LEN ${wire_length}
+#define MAVLINK_MSG_ID_${name}_MIN_LEN ${wire_min_length}
+#define MAVLINK_MSG_ID_${id}_LEN ${wire_length}
+#define MAVLINK_MSG_ID_${id}_MIN_LEN ${wire_min_length}
+
+#define MAVLINK_MSG_ID_${name}_CRC ${crc_extra}
+#define MAVLINK_MSG_ID_${id}_CRC ${crc_extra}
+
+${{array_fields:#define MAVLINK_MSG_${msg_name}_FIELD_${name_upper}_LEN ${array_length}
+}}
+
+#if MAVLINK_COMMAND_24BIT
+#define MAVLINK_MESSAGE_INFO_${name} { \\
+ ${id}, \\
+ "${name}", \\
+ ${num_fields}, \\
+ { ${{ordered_fields: { "${name}", ${c_print_format}, MAVLINK_TYPE_${type_upper}, ${array_length}, ${wire_offset}, offsetof(mavlink_${name_lower}_t, ${name}) }, \\
+ }} } \\
+}
+#else
+#define MAVLINK_MESSAGE_INFO_${name} { \\
+ "${name}", \\
+ ${num_fields}, \\
+ { ${{ordered_fields: { "${name}", ${c_print_format}, MAVLINK_TYPE_${type_upper}, ${array_length}, ${wire_offset}, offsetof(mavlink_${name_lower}_t, ${name}) }, \\
+ }} } \\
+}
+#endif
+
+/**
+ * @brief Pack a ${name_lower} message
+ * @param system_id ID of this system
+ * @param component_id ID of this component (e.g. 200 for IMU)
+ * @param msg The MAVLink message to compress the data into
+ *
+${{arg_fields: * @param ${name} ${description}
+}}
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_${name_lower}_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
+ ${{arg_fields: ${array_const}${type} ${array_prefix}${name},}})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+ char buf[MAVLINK_MSG_ID_${name}_LEN];
+${{scalar_fields: _mav_put_${type}(buf, ${wire_offset}, ${putname});
+}}
+${{array_fields: _mav_put_${type}_array(buf, ${wire_offset}, ${name}, ${array_length});
+}}
+ memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_${name}_LEN);
+#else
+ mavlink_${name_lower}_t packet;
+${{scalar_fields: packet.${name} = ${putname};
+}}
+${{array_fields: mav_array_memcpy(packet.${name}, ${name}, sizeof(${type})*${array_length});
+}}
+ memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_${name}_LEN);
+#endif
+
+ msg->msgid = MAVLINK_MSG_ID_${name};
+ return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+}
+
+/**
+ * @brief Pack a ${name_lower} message on a channel
+ * @param system_id ID of this system
+ * @param component_id ID of this component (e.g. 200 for IMU)
+ * @param chan The MAVLink channel this message will be sent over
+ * @param msg The MAVLink message to compress the data into
+${{arg_fields: * @param ${name} ${description}
+}}
+ * @return length of the message in bytes (excluding serial stream start sign)
+ */
+static inline uint16_t mavlink_msg_${name_lower}_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
+ mavlink_message_t* msg,
+ ${{arg_fields:${array_const}${type} ${array_prefix}${name},}})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+ char buf[MAVLINK_MSG_ID_${name}_LEN];
+${{scalar_fields: _mav_put_${type}(buf, ${wire_offset}, ${putname});
+}}
+${{array_fields: _mav_put_${type}_array(buf, ${wire_offset}, ${name}, ${array_length});
+}}
+ memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_${name}_LEN);
+#else
+ mavlink_${name_lower}_t packet;
+${{scalar_fields: packet.${name} = ${putname};
+}}
+${{array_fields: mav_array_memcpy(packet.${name}, ${name}, sizeof(${type})*${array_length});
+}}
+ memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_${name}_LEN);
+#endif
+
+ msg->msgid = MAVLINK_MSG_ID_${name};
+ return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+}
+
+/**
+ * @brief Encode a ${name_lower} struct
+ *
+ * @param system_id ID of this system
+ * @param component_id ID of this component (e.g. 200 for IMU)
+ * @param msg The MAVLink message to compress the data into
+ * @param ${name_lower} C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_${name_lower}_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_${name_lower}_t* ${name_lower})
+{
+ return mavlink_msg_${name_lower}_pack(system_id, component_id, msg,${{arg_fields: ${name_lower}->${name},}});
+}
+
+/**
+ * @brief Encode a ${name_lower} struct on a channel
+ *
+ * @param system_id ID of this system
+ * @param component_id ID of this component (e.g. 200 for IMU)
+ * @param chan The MAVLink channel this message will be sent over
+ * @param msg The MAVLink message to compress the data into
+ * @param ${name_lower} C-struct to read the message contents from
+ */
+static inline uint16_t mavlink_msg_${name_lower}_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_${name_lower}_t* ${name_lower})
+{
+ return mavlink_msg_${name_lower}_pack_chan(system_id, component_id, chan, msg,${{arg_fields: ${name_lower}->${name},}});
+}
+
+/**
+ * @brief Send a ${name_lower} message
+ * @param chan MAVLink channel to send the message
+ *
+${{arg_fields: * @param ${name} ${description}
+}}
+ */
+#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+static inline void mavlink_msg_${name_lower}_send(mavlink_channel_t chan,${{arg_fields: ${array_const}${type} ${array_prefix}${name},}})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+ char buf[MAVLINK_MSG_ID_${name}_LEN];
+${{scalar_fields: _mav_put_${type}(buf, ${wire_offset}, ${putname});
+}}
+${{array_fields: _mav_put_${type}_array(buf, ${wire_offset}, ${name}, ${array_length});
+}}
+ _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_${name}, buf, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+#else
+ mavlink_${name_lower}_t packet;
+${{scalar_fields: packet.${name} = ${putname};
+}}
+${{array_fields: mav_array_memcpy(packet.${name}, ${name}, sizeof(${type})*${array_length});
+}}
+ _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_${name}, (const char *)&packet, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+#endif
+}
+
+/**
+ * @brief Send a ${name_lower} message
+ * @param chan MAVLink channel to send the message
+ * @param struct The MAVLink struct to serialize
+ */
+static inline void mavlink_msg_${name_lower}_send_struct(mavlink_channel_t chan, const mavlink_${name_lower}_t* ${name_lower})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+ mavlink_msg_${name_lower}_send(chan,${{arg_fields: ${name_lower}->${name},}});
+#else
+ _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_${name}, (const char *)${name_lower}, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+#endif
+}
+
+#if MAVLINK_MSG_ID_${name}_LEN <= MAVLINK_MAX_PAYLOAD_LEN
+/*
+ This varient of _send() can be used to save stack space by re-using
+ memory from the receive buffer. The caller provides a
+ mavlink_message_t which is the size of a full mavlink message. This
+ is usually the receive buffer for the channel, and allows a reply to an
+ incoming message with minimum stack space usage.
+ */
+static inline void mavlink_msg_${name_lower}_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, ${{arg_fields: ${array_const}${type} ${array_prefix}${name},}})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+ char *buf = (char *)msgbuf;
+${{scalar_fields: _mav_put_${type}(buf, ${wire_offset}, ${putname});
+}}
+${{array_fields: _mav_put_${type}_array(buf, ${wire_offset}, ${name}, ${array_length});
+}}
+ _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_${name}, buf, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+#else
+ mavlink_${name_lower}_t *packet = (mavlink_${name_lower}_t *)msgbuf;
+${{scalar_fields: packet->${name} = ${putname};
+}}
+${{array_fields: mav_array_memcpy(packet->${name}, ${name}, sizeof(${type})*${array_length});
+}}
+ _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_${name}, (const char *)packet, MAVLINK_MSG_ID_${name}_MIN_LEN, MAVLINK_MSG_ID_${name}_LEN, MAVLINK_MSG_ID_${name}_CRC);
+#endif
+}
+#endif
+
+#endif
+
+// MESSAGE ${name} UNPACKING
+
+${{fields:
+/**
+ * @brief Get field ${name} from ${name_lower} message
+ *
+ * @return ${description}
+ */
+static inline ${return_type} mavlink_msg_${name_lower}_get_${name}(const mavlink_message_t* msg${get_arg})
+{
+ return _MAV_RETURN_${type}${array_tag}(msg, ${array_return_arg} ${wire_offset});
+}
+}}
+
+/**
+ * @brief Decode a ${name_lower} message into a struct
+ *
+ * @param msg The message to decode
+ * @param ${name_lower} C-struct to decode the message contents into
+ */
+static inline void mavlink_msg_${name_lower}_decode(const mavlink_message_t* msg, mavlink_${name_lower}_t* ${name_lower})
+{
+#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
+${{ordered_fields: ${decode_left}mavlink_msg_${name_lower}_get_${name}(msg${decode_right});
+}}
+#else
+ uint8_t len = msg->len < MAVLINK_MSG_ID_${name}_LEN? msg->len : MAVLINK_MSG_ID_${name}_LEN;
+ memset(${name_lower}, 0, MAVLINK_MSG_ID_${name}_LEN);
+ memcpy(${name_lower}, _MAV_PAYLOAD(msg), len);
+#endif
+}
+''', m)
+ f.close()
+
+
+def generate_testsuite_h(directory, xml):
+ '''generate testsuite.h per XML file'''
+ f = open(os.path.join(directory, "testsuite.h"), mode='w')
+ t.write(f, '''
+/** @file
+ * @brief MAVLink comm protocol testsuite generated from ${basename}.xml
+ * @see http://qgroundcontrol.org/mavlink/
+ */
+#pragma once
+#ifndef ${basename_upper}_TESTSUITE_H
+#define ${basename_upper}_TESTSUITE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAVLINK_TEST_ALL
+#define MAVLINK_TEST_ALL
+${{include_list:static void mavlink_test_${base}(uint8_t, uint8_t, mavlink_message_t *last_msg);
+}}
+static void mavlink_test_${basename}(uint8_t, uint8_t, mavlink_message_t *last_msg);
+
+static void mavlink_test_all(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
+{
+${{include_list: mavlink_test_${base}(system_id, component_id, last_msg);
+}}
+ mavlink_test_${basename}(system_id, component_id, last_msg);
+}
+#endif
+
+${{include_list:#include "../${base}/testsuite.h"
+}}
+
+${{message:
+static void mavlink_test_${name_lower}(uint8_t system_id, uint8_t component_id, mavlink_message_t *last_msg)
+{
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+ mavlink_status_t *status = mavlink_get_channel_status(MAVLINK_COMM_0);
+ if ((status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) && MAVLINK_MSG_ID_${name} >= 256) {
+ return;
+ }
+#endif
+ mavlink_message_t msg;
+ uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+ uint16_t i;
+ mavlink_${name_lower}_t packet_in = {
+ ${{ordered_fields:${c_test_value},}}
+ };
+ mavlink_${name_lower}_t packet1, packet2;
+ memset(&packet1, 0, sizeof(packet1));
+ ${{scalar_fields:packet1.${name} = packet_in.${name};
+ }}
+ ${{array_fields:mav_array_memcpy(packet1.${name}, packet_in.${name}, sizeof(${type})*${array_length});
+ }}
+#ifdef MAVLINK_STATUS_FLAG_OUT_MAVLINK1
+ if (status->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1) {
+ // cope with extensions
+ memset(MAVLINK_MSG_ID_${name}_MIN_LEN + (char *)&packet1, 0, sizeof(packet1)-MAVLINK_MSG_ID_${name}_MIN_LEN);
+ }
+#endif
+ memset(&packet2, 0, sizeof(packet2));
+ mavlink_msg_${name_lower}_encode(system_id, component_id, &msg, &packet1);
+ mavlink_msg_${name_lower}_decode(&msg, &packet2);
+ MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+ memset(&packet2, 0, sizeof(packet2));
+ mavlink_msg_${name_lower}_pack(system_id, component_id, &msg ${{arg_fields:, packet1.${name} }});
+ mavlink_msg_${name_lower}_decode(&msg, &packet2);
+ MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+ memset(&packet2, 0, sizeof(packet2));
+ mavlink_msg_${name_lower}_pack_chan(system_id, component_id, MAVLINK_COMM_0, &msg ${{arg_fields:, packet1.${name} }});
+ mavlink_msg_${name_lower}_decode(&msg, &packet2);
+ MAVLINK_ASSERT(memcmp(&packet1, &packet2, sizeof(packet1)) == 0);
+
+ memset(&packet2, 0, sizeof(packet2));
+ mavlink_msg_to_send_buffer(buffer, &msg);
+ for (i=0; i\n" % indent)
+ outf.write("%s/// %s\n" % (indent, escapedText))
+ outf.write("%s/// \n" % indent)
+
+
+def generate_enums(outf, enums):
+ print("Generating enums")
+ outf.write("namespace MavLink\n{\n")
+ for e in enums:
+ #if len(e.description) > 0:
+ generate_xmlDocSummary(outf, e.description, 1)
+ outf.write("\tpublic enum %s : uint\n\t{\n" % e.name)
+
+ for entry in e.entry:
+ if len(entry.description) > 0:
+ generate_xmlDocSummary(outf, entry.description, 2)
+ outf.write("\t\t%s = %u,\n" % (entry.name, entry.value))
+
+ outf.write("\n\t}\n\n")
+ outf.write("\n}\n")
+
+def generate_classes(outf, msgs):
+ print("Generating class definitions")
+
+ outf.write("""
+
+
+namespace MavLink\n{
+
+ public abstract class MavlinkMessage
+ {
+ public abstract int Serialize(byte[] bytes, ref int offset);
+ }
+""")
+
+ for m in msgs:
+ if (len(m.description) >0):
+ generate_xmlDocSummary(outf, m.description, 1)
+ outf.write("""\tpublic class Msg_%s : MavlinkMessage
+ {
+""" % m.name.lower())
+
+ for f in m.fields:
+ if (f.description.upper() != f.name.upper()):
+ generate_xmlDocSummary(outf, f.description, 2)
+ if (f.array_length):
+ outf.write("\t\tpublic %s[] %s; // Array size %s\n" % (map[f.type], mapFieldName.get(f.name, f.name), f.array_length))
+ else:
+ outf.write("\t\tpublic %s %s;\n" % (map[f.type], mapFieldName.get(f.name, f.name)))
+
+ outf.write("""
+ public override int Serialize(byte[] bytes, ref int offset)
+ {
+ return MavLinkSerializer.Serialize_%s(this, bytes, ref offset);
+ }
+""" % m.name.upper())
+
+ outf.write("\t}\n\n")
+ outf.write("}\n\n")
+
+
+
+def generate_Deserialization(outf, messages):
+
+ # Create the deserialization funcs
+ for m in messages:
+ classname="Msg_%s" % m.name.lower()
+ outf.write("\n\t\tinternal static MavlinkMessage Deserialize_%s(byte[] bytes, int offset)\n\t\t{\n" % (m.name))
+ offset = 0
+
+ outf.write("\t\t\treturn new %s\n" % classname)
+ outf.write("\t\t\t{\n")
+
+ for f in m.ordered_fields:
+ if (f.array_length):
+ outf.write("\t\t\t\t%s = ByteArrayUtil.%s(bytes, offset + %s, %s),\n" % (mapFieldName.get(f.name, f.name), mapType[f.type][0], offset, f.array_length))
+ offset += (f.array_length * mapType[f.type][1])
+ continue
+
+ # mapping 'char' to byte here since there is no real equivalent in the CLR
+ if (f.type == 'uint8_t' or f.type == 'char' ):
+ outf.write("\t\t\t\t%s = bytes[offset + %s],\n" % (mapFieldName.get(f.name, f.name),offset))
+ offset+=1
+ else:
+ outf.write("\t\t\t\t%s = bitconverter.%s(bytes, offset + %s),\n" % (mapFieldName.get(f.name, f.name), mapType[f.type][0] , offset))
+ offset += mapType[f.type][1]
+
+ outf.write("\t\t\t};\n")
+ outf.write("\t\t}\n")
+
+
+def generate_Serialization(outf, messages):
+
+ # Create the table of serialization delegates
+ for m in messages:
+ classname="Msg_%s" % m.name.lower()
+
+ outf.write("\n\t\tinternal static int Serialize_%s(this %s msg, byte[] bytes, ref int offset)\n\t\t{\n" % (m.name, classname))
+ offset=0
+
+ # Now (since Mavlink 1.0) we need to deal with ordering of fields
+ for f in m.ordered_fields:
+
+ if (f.array_length):
+ outf.write("\t\t\tByteArrayUtil.ToByteArray(msg.%s, bytes, offset + %s, %s);\n" % (f.name, offset, f.array_length))
+ offset += f.array_length * mapType[f.type][1]
+ continue
+
+ if (f.type == 'uint8_t'):
+ outf.write("\t\t\tbytes[offset + %s] = msg.%s;\n" % (offset,mapFieldName.get(f.name, f.name)))
+ offset+=1
+ elif (f.type == 'int8_t'):
+ outf.write("\t\t\tbytes[offset + %s] = unchecked((byte)msg.%s);\n" % (offset,mapFieldName.get(f.name, f.name)))
+ offset+=1
+ elif (f.type == 'char'):
+ outf.write("\t\t\tbytes[offset + %s] = msg.%s; // todo: check int8_t and char are compatible\n" % (offset,mapFieldName.get(f.name, f.name)))
+ offset+=1
+ else:
+ outf.write("\t\t\tbitconverter.GetBytes(msg.%s, bytes, offset + %s);\n" % (mapFieldName.get(f.name, f.name),offset))
+ offset += mapType[f.type][1]
+
+ outf.write("\t\t\toffset += %s;\n" % offset)
+ outf.write("\t\t\treturn %s;\n" % m.id)
+ outf.write("\t\t}\n")
+
+
+def generate_CodecIndex(outf, messages, xml):
+
+ outf.write("""
+
+/*
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Note: this file has been auto-generated. DO NOT EDIT
+*/
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace MavLink
+{
+ public static class MavlinkSettings
+ {
+""")
+ outf.write('\t\tpublic const string WireProtocolVersion = "%s";' % xml[0].wire_protocol_version)
+ outf.write('\n\t\tpublic const byte ProtocolMarker = 0x%x;' % xml[0].protocol_marker)
+ outf.write('\n\t\tpublic const bool CrcExtra = %s;' % str(xml[0].crc_extra).lower())
+ outf.write('\n\t\tpublic const bool IsLittleEndian = %s;' % str(xml[0].little_endian).lower())
+
+ outf.write("""
+ }
+
+ public delegate MavlinkMessage MavlinkPacketDeserializeFunc(byte[] bytes, int offset);
+
+ //returns the message ID, offset is advanced by the number of bytes used to serialize
+ public delegate int MavlinkPacketSerializeFunc(byte[] bytes, ref int offset, object mavlinkPacket);
+
+ public class MavPacketInfo
+ {
+ public MavlinkPacketDeserializeFunc Deserializer;
+ public int [] OrderMap;
+ public byte CrcExtra;
+
+ public MavPacketInfo(MavlinkPacketDeserializeFunc deserializer, byte crcExtra)
+ {
+ this.Deserializer = deserializer;
+ this.CrcExtra = crcExtra;
+ }
+ }
+
+ public static class MavLinkSerializer
+ {
+ public static void SetDataIsLittleEndian(bool isLittle)
+ {
+ bitconverter.SetDataIsLittleEndian(isLittle);
+ }
+
+ private static readonly FrameworkBitConverter bitconverter = new FrameworkBitConverter();
+
+ public static Dictionary Lookup = new Dictionary
+ {""")
+
+ for m in messages:
+ classname="Msg_%s" % m.name.lower()
+ outf.write("\n\t\t\t{%s, new MavPacketInfo(Deserialize_%s, %s)}," % (m.id, m.name, m.crc_extra))
+ outf.write("\n\t\t};\n")
+
+
+def generate(basename, xml):
+ '''generate complete MAVLink CSharp implemenation'''
+ structsfilename = basename + '.generated.cs'
+
+ msgs = []
+ enums = []
+ filelist = []
+ for x in xml:
+ msgs.extend(x.message)
+ enums.extend(x.enum)
+ filelist.append(os.path.basename(x.filename))
+
+ for m in msgs:
+ m.order_map = [ 0 ] * len(m.fieldnames)
+ for i in range(0, len(m.fieldnames)):
+ m.order_map[i] = m.ordered_fieldnames.index(m.fieldnames[i])
+
+ m.fields_in_order = []
+ for i in range(0, len(m.fieldnames)):
+ m.order_map[i] = m.ordered_fieldnames.index(m.fieldnames[i])
+
+ print("Generating messages file: %s" % structsfilename)
+ dir = os.path.dirname(structsfilename)
+ if not os.path.exists(dir):
+ os.makedirs(dir)
+ outf = open(structsfilename, "w")
+ generate_preamble(outf, msgs, filelist, xml[0])
+
+ outf.write("""
+
+using System.Reflection;
+
+[assembly: AssemblyTitle("Mavlink Classes")]
+[assembly: AssemblyDescription("Generated Message Classes for Mavlink. See http://qgroundcontrol.org/mavlink/start")]
+[assembly: AssemblyProduct("Mavlink")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+ """)
+
+ generate_enums(outf, enums)
+ generate_classes(outf, msgs)
+ outf.close()
+
+ print("Generating the (De)Serializer classes")
+ serfilename = basename + '_codec.generated.cs'
+ outf = open(serfilename, "w")
+ generate_CodecIndex(outf, msgs, xml)
+ generate_Deserialization(outf, msgs)
+ generate_Serialization(outf, msgs)
+
+ outf.write("\t}\n\n")
+ outf.write("}\n\n")
+
+ outf.close()
+
+ # Some build commands depend on the platform - eg MS .NET Windows Vs Mono on Linux
+ if platform.system() == "Windows":
+ winpath=os.environ['WinDir']
+ cscCommand = winpath + "\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe"
+
+ if (os.path.exists(cscCommand)==False):
+ print("\nError: CS compiler not found. .Net Assembly generation skipped")
+ return
+ else:
+ print("Error:.Net Assembly generation not yet supported on non Windows platforms")
+ return
+ cscCommand = "csc"
+
+ print("Compiling Assembly for .Net Framework 4.0")
+
+ generatedCsFiles = [ serfilename, structsfilename]
+
+ includedCsFiles = [ 'CS/common/ByteArrayUtil.cs', 'CS/common/FrameworkBitConverter.cs', 'CS/common/Mavlink.cs' ]
+
+ outputLibraryPath = os.path.normpath(dir + "/mavlink.dll")
+
+ compileCommand = "%s %s" % (cscCommand, "/target:library /debug /out:" + outputLibraryPath)
+ compileCommand = compileCommand + " /doc:" + os.path.normpath(dir + "/mavlink.xml")
+
+ for csFile in generatedCsFiles + includedCsFiles:
+ compileCommand = compileCommand + " " + os.path.normpath(csFile)
+
+ #print("Cmd:" + compileCommand)
+ res = os.system (compileCommand)
+
+ if res == '0':
+ print("Generated %s OK" % filename)
+ else:
+ print("Error")
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_java.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_java.py
new file mode 100644
index 000000000..e04db941c
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_java.py
@@ -0,0 +1,617 @@
+#!/usr/bin/env python
+'''
+ Parse a MAVLink protocol XML file and generate a Java implementation
+
+ Copyright Andrew Tridgell 2011
+ Released under GNU GPL version 3 or later
+ '''
+
+import sys, textwrap, os, time
+from . import mavparse, mavtemplate
+
+t = mavtemplate.MAVTemplate()
+
+def generate_enums(basename, xml):
+ '''generate main header per XML file'''
+ directory = os.path.join(basename, '''enums''')
+ mavparse.mkdir_p(directory)
+ for en in xml.enum:
+ f = open(os.path.join(directory, en.name+".java"), mode='w')
+ t.write(f, '''
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+package com.MAVLink.enums;
+
+/**
+* ${description}
+*/
+public class ${name} {
+${{entry: public static final int ${name} = ${value}; /* ${description} |${{param:${description}| }} */
+}}
+}
+ ''', en)
+ f.close()
+
+
+
+def generate_CRC(directory, xml):
+ # and message CRCs array
+ xml.message_crcs_array = ''
+ for msgid in range(256):
+ crc = xml.message_crcs.get(msgid, 0)
+ xml.message_crcs_array += '%u, ' % crc
+ xml.message_crcs_array = xml.message_crcs_array[:-2]
+
+ f = open(os.path.join(directory, "CRC.java"), mode='w')
+ t.write(f,'''
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+package com.MAVLink.${basename};
+
+/**
+* X.25 CRC calculation for MAVlink messages. The checksum must be initialized,
+* updated with witch field of the message, and then finished with the message
+* id.
+*
+*/
+public class CRC {
+ private static final int[] MAVLINK_MESSAGE_CRCS = {${message_crcs_array}};
+ private static final int CRC_INIT_VALUE = 0xffff;
+ private int crcValue;
+
+ /**
+ * Accumulate the X.25 CRC by adding one char at a time.
+ *
+ * The checksum function adds the hash of one char at a time to the 16 bit
+ * checksum (uint16_t).
+ *
+ * @param data
+ * new char to hash
+ **/
+ public void update_checksum(int data) {
+ data = data & 0xff; //cast because we want an unsigned type
+ int tmp = data ^ (crcValue & 0xff);
+ tmp ^= (tmp << 4) & 0xff;
+ crcValue = ((crcValue >> 8) & 0xff) ^ (tmp << 8) ^ (tmp << 3) ^ ((tmp >> 4) & 0xf);
+ }
+
+ /**
+ * Finish the CRC calculation of a message, by running the CRC with the
+ * Magic Byte. This Magic byte has been defined in MAVlink v1.0.
+ *
+ * @param msgid
+ * The message id number
+ */
+ public void finish_checksum(int msgid) {
+ update_checksum(MAVLINK_MESSAGE_CRCS[msgid]);
+ }
+
+ /**
+ * Initialize the buffer for the X.25 CRC
+ *
+ */
+ public void start_checksum() {
+ crcValue = CRC_INIT_VALUE;
+ }
+
+ public int getMSB() {
+ return ((crcValue >> 8) & 0xff);
+ }
+
+ public int getLSB() {
+ return (crcValue & 0xff);
+ }
+
+ public CRC() {
+ start_checksum();
+ }
+
+}
+ ''',xml)
+
+ f.close()
+
+
+def generate_message_h(directory, m):
+ '''generate per-message header for a XML file'''
+ f = open(os.path.join(directory, 'msg_%s.java' % m.name_lower), mode='w')
+
+ path=directory.split('/')
+ t.write(f, '''
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+// MESSAGE ${name} PACKING
+package com.MAVLink.%s;
+import com.MAVLink.MAVLinkPacket;
+import com.MAVLink.Messages.MAVLinkMessage;
+import com.MAVLink.Messages.MAVLinkPayload;
+
+/**
+* ${description}
+*/
+public class msg_${name_lower} extends MAVLinkMessage{
+
+ public static final int MAVLINK_MSG_ID_${name} = ${id};
+ public static final int MAVLINK_MSG_LENGTH = ${wire_length};
+ private static final long serialVersionUID = MAVLINK_MSG_ID_${name};
+
+
+ ${{ordered_fields:
+ /**
+ * ${description}
+ */
+ public ${type} ${name}${array_suffix};
+ }}
+
+ /**
+ * Generates the payload for a mavlink message for a message of this type
+ * @return
+ */
+ public MAVLinkPacket pack(){
+ MAVLinkPacket packet = new MAVLinkPacket(MAVLINK_MSG_LENGTH);
+ packet.sysid = 255;
+ packet.compid = 190;
+ packet.msgid = MAVLINK_MSG_ID_${name};
+ ${{ordered_fields:
+ ${packField}
+ }}
+ return packet;
+ }
+
+ /**
+ * Decode a ${name_lower} message into this class fields
+ *
+ * @param payload The message to decode
+ */
+ public void unpack(MAVLinkPayload payload) {
+ payload.resetIndex();
+ ${{ordered_fields:
+ ${unpackField}
+ }}
+ }
+
+ /**
+ * Constructor for a new message, just initializes the msgid
+ */
+ public msg_${name_lower}(){
+ msgid = MAVLINK_MSG_ID_${name};
+ }
+
+ /**
+ * Constructor for a new message, initializes the message with the payload
+ * from a mavlink packet
+ *
+ */
+ public msg_${name_lower}(MAVLinkPacket mavLinkPacket){
+ this.sysid = mavLinkPacket.sysid;
+ this.compid = mavLinkPacket.compid;
+ this.msgid = MAVLINK_MSG_ID_${name};
+ unpack(mavLinkPacket.payload);
+ }
+
+ ${{ordered_fields: ${getText} }}
+ /**
+ * Returns a string with the MSG name and data
+ */
+ public String toString(){
+ return "MAVLINK_MSG_ID_${name} -"+${{ordered_fields:" ${name}:"+${name}+}}"";
+ }
+}
+ ''' % path[len(path)-1], m)
+ f.close()
+
+
+def generate_MAVLinkMessage(directory, xml_list):
+ f = open(os.path.join(directory, "MAVLinkPacket.java"), mode='w')
+ t.write(f, '''
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * java mavlink generator tool. It should not be modified by hand.
+ */
+
+package com.MAVLink;
+
+import java.io.Serializable;
+import com.MAVLink.Messages.MAVLinkPayload;
+import com.MAVLink.Messages.MAVLinkMessage;
+import com.MAVLink.${basename}.CRC;
+import com.MAVLink.common.*;
+import com.MAVLink.${basename}.*;
+
+/**
+* Common interface for all MAVLink Messages
+* Packet Anatomy
+* This is the anatomy of one packet. It is inspired by the CAN and SAE AS-4 standards.
+
+* Byte Index Content Value Explanation
+* 0 Packet start sign v1.0: 0xFE Indicates the start of a new packet. (v0.9: 0x55)
+* 1 Payload length 0 - 255 Indicates length of the following payload.
+* 2 Packet sequence 0 - 255 Each component counts up his send sequence. Allows to detect packet loss
+* 3 System ID 1 - 255 ID of the SENDING system. Allows to differentiate different MAVs on the same network.
+* 4 Component ID 0 - 255 ID of the SENDING component. Allows to differentiate different components of the same system, e.g. the IMU and the autopilot.
+* 5 Message ID 0 - 255 ID of the message - the id defines what the payload means and how it should be correctly decoded.
+* 6 to (n+6) Payload 0 - 255 Data of the message, depends on the message id.
+* (n+7)to(n+8) Checksum (low byte, high byte) ITU X.25/SAE AS-4 hash, excluding packet start sign, so bytes 1..(n+6) Note: The checksum also includes MAVLINK_CRC_EXTRA (Number computed from message fields. Protects the packet from decoding a different version of the same packet but with different variables).
+
+* The checksum is the same as used in ITU X.25 and SAE AS-4 standards (CRC-16-CCITT), documented in SAE AS5669A. Please see the MAVLink source code for a documented C-implementation of it. LINK TO CHECKSUM
+* The minimum packet length is 8 bytes for acknowledgement packets without payload
+* The maximum packet length is 263 bytes for full payload
+*
+*/
+public class MAVLinkPacket implements Serializable {
+ private static final long serialVersionUID = 2095947771227815314L;
+
+ public static final int MAVLINK_STX = 254;
+
+ /**
+ * Message length. NOT counting STX, LENGTH, SEQ, SYSID, COMPID, MSGID, CRC1 and CRC2
+ */
+ public final int len;
+
+ /**
+ * Message sequence
+ */
+ public int seq;
+
+ /**
+ * ID of the SENDING system. Allows to differentiate different MAVs on the
+ * same network.
+ */
+ public int sysid;
+
+ /**
+ * ID of the SENDING component. Allows to differentiate different components
+ * of the same system, e.g. the IMU and the autopilot.
+ */
+ public int compid;
+
+ /**
+ * ID of the message - the id defines what the payload means and how it
+ * should be correctly decoded.
+ */
+ public int msgid;
+
+ /**
+ * Data of the message, depends on the message id.
+ */
+ public MAVLinkPayload payload;
+
+ /**
+ * ITU X.25/SAE AS-4 hash, excluding packet start sign, so bytes 1..(n+6)
+ * Note: The checksum also includes MAVLINK_CRC_EXTRA (Number computed from
+ * message fields. Protects the packet from decoding a different version of
+ * the same packet but with different variables).
+ */
+ public CRC crc;
+
+ public MAVLinkPacket(int payloadLength){
+ len = payloadLength;
+ payload = new MAVLinkPayload(payloadLength);
+ }
+
+ /**
+ * Check if the size of the Payload is equal to the "len" byte
+ */
+ public boolean payloadIsFilled() {
+ return payload.size() >= len;
+ }
+
+ /**
+ * Update CRC for this packet.
+ */
+ public void generateCRC(){
+ if(crc == null){
+ crc = new CRC();
+ }
+ else{
+ crc.start_checksum();
+ }
+
+ crc.update_checksum(len);
+ crc.update_checksum(seq);
+ crc.update_checksum(sysid);
+ crc.update_checksum(compid);
+ crc.update_checksum(msgid);
+
+ payload.resetIndex();
+
+ final int payloadSize = payload.size();
+ for (int i = 0; i < payloadSize; i++) {
+ crc.update_checksum(payload.getByte());
+ }
+ crc.finish_checksum(msgid);
+ }
+
+ /**
+ * Encode this packet for transmission.
+ *
+ * @return Array with bytes to be transmitted
+ */
+ public byte[] encodePacket() {
+ byte[] buffer = new byte[6 + len + 2];
+
+ int i = 0;
+ buffer[i++] = (byte) MAVLINK_STX;
+ buffer[i++] = (byte) len;
+ buffer[i++] = (byte) seq;
+ buffer[i++] = (byte) sysid;
+ buffer[i++] = (byte) compid;
+ buffer[i++] = (byte) msgid;
+
+ final int payloadSize = payload.size();
+ for (int j = 0; j < payloadSize; j++) {
+ buffer[i++] = payload.payload.get(j);
+ }
+
+ generateCRC();
+ buffer[i++] = (byte) (crc.getLSB());
+ buffer[i++] = (byte) (crc.getMSB());
+ return buffer;
+ }
+
+ /**
+ * Unpack the data in this packet and return a MAVLink message
+ *
+ * @return MAVLink message decoded from this packet
+ */
+ public MAVLinkMessage unpack() {
+ switch (msgid) {
+ ''', xml_list[0])
+ for xml in xml_list:
+ t.write(f, '''
+ ${{message:
+ case msg_${name_lower}.MAVLINK_MSG_ID_${name}:
+ return new msg_${name_lower}(this);
+ }}
+ ''',xml)
+ f.write('''
+ default:
+ return null;
+ }
+ }
+
+}
+
+ ''')
+
+ f.close()
+
+def copy_fixed_headers(directory, xml):
+ '''copy the fixed protocol headers to the target directory'''
+ import shutil
+ hlist = [ 'Parser.java', 'Messages/MAVLinkMessage.java', 'Messages/MAVLinkPayload.java', 'Messages/MAVLinkStats.java' ]
+ basepath = os.path.dirname(os.path.realpath(__file__))
+ srcpath = os.path.join(basepath, 'java/lib')
+ print("Copying fixed headers")
+ for h in hlist:
+ src = os.path.realpath(os.path.join(srcpath, h))
+ dest = os.path.realpath(os.path.join(directory, h))
+ if src == dest:
+ continue
+ destdir = os.path.realpath(os.path.join(directory, 'Messages'))
+ try:
+ os.makedirs(destdir)
+ except:
+ print("Not re-creating Messages directory")
+ shutil.copy(src, dest)
+
+class mav_include(object):
+ def __init__(self, base):
+ self.base = base
+
+
+def mavfmt(field, typeInfo=False):
+ '''work out the struct format for a type'''
+ map = {
+ 'float' : ('float', 'Float'),
+ 'double' : ('double', 'Double'),
+ 'char' : ('byte', 'Byte'),
+ 'int8_t' : ('byte', 'Byte'),
+ 'uint8_t' : ('short', 'UnsignedByte'),
+ 'uint8_t_mavlink_version' : ('short', 'UnsignedByte'),
+ 'int16_t' : ('short', 'Short'),
+ 'uint16_t' : ('int', 'UnsignedShort'),
+ 'int32_t' : ('int', 'Int'),
+ 'uint32_t' : ('long', 'UnsignedInt'),
+ 'int64_t' : ('long', 'Long'),
+ 'uint64_t' : ('long', 'UnsignedLong'),
+ }
+
+ if typeInfo:
+ return map[field.type][1]
+ else:
+ return map[field.type][0]
+
+def generate_one(basename, xml):
+ '''generate headers for one XML file'''
+
+ directory = os.path.join(basename, xml.basename)
+
+ print("Generating Java implementation in directory %s" % directory)
+ mavparse.mkdir_p(directory)
+
+ if xml.little_endian:
+ xml.mavlink_endian = "MAVLINK_LITTLE_ENDIAN"
+ else:
+ xml.mavlink_endian = "MAVLINK_BIG_ENDIAN"
+
+ if xml.crc_extra:
+ xml.crc_extra_define = "1"
+ else:
+ xml.crc_extra_define = "0"
+
+ if xml.sort_fields:
+ xml.aligned_fields_define = "1"
+ else:
+ xml.aligned_fields_define = "0"
+
+ # work out the included headers
+ xml.include_list = []
+ for i in xml.include:
+ base = i[:-4]
+ xml.include_list.append(mav_include(base))
+
+ # form message lengths array
+ xml.message_lengths_array = ''
+ for mlen in xml.message_lengths:
+ xml.message_lengths_array += '%u, ' % mlen
+ xml.message_lengths_array = xml.message_lengths_array[:-2]
+
+
+
+ # form message info array
+ xml.message_info_array = ''
+ for name in xml.message_names:
+ if name is not None:
+ xml.message_info_array += 'MAVLINK_MESSAGE_INFO_%s, ' % name
+ else:
+ # Several C compilers don't accept {NULL} for
+ # multi-dimensional arrays and structs
+ # feed the compiler a "filled" empty message
+ xml.message_info_array += '{"EMPTY",0,{{"","",MAVLINK_TYPE_CHAR,0,0,0}}}, '
+ xml.message_info_array = xml.message_info_array[:-2]
+
+ # add some extra field attributes for convenience with arrays
+ for m in xml.message:
+ m.msg_name = m.name
+ if xml.crc_extra:
+ m.crc_extra_arg = ", %s" % m.crc_extra
+ else:
+ m.crc_extra_arg = ""
+ for f in m.fields:
+ if f.print_format is None:
+ f.c_print_format = 'NULL'
+ else:
+ f.c_print_format = '"%s"' % f.print_format
+ f.getText = ''
+ if f.array_length != 0:
+ f.array_suffix = '[] = new %s[%u]' % (mavfmt(f),f.array_length)
+ f.array_prefix = '*'
+ f.array_tag = '_array'
+ f.array_arg = ', %u' % f.array_length
+ f.array_return_arg = '%s, %u, ' % (f.name, f.array_length)
+ f.array_const = 'const '
+ f.decode_left = ''
+ f.decode_right = 'm.%s' % (f.name)
+
+ f.unpackField = '''
+ for (int i = 0; i < this.%s.length; i++) {
+ this.%s[i] = payload.get%s();
+ }
+ ''' % (f.name, f.name, mavfmt(f, True) )
+ f.packField = '''
+ for (int i = 0; i < %s.length; i++) {
+ packet.payload.put%s(%s[i]);
+ }
+ ''' % (f.name, mavfmt(f, True),f.name)
+ f.return_type = 'uint16_t'
+ f.get_arg = ', %s *%s' % (f.type, f.name)
+ if f.type == 'char':
+ f.c_test_value = '"%s"' % f.test_value
+ f.getText = '''
+ /**
+ * Sets the buffer of this message with a string, adds the necessary padding
+ */
+ public void set%s(String str) {
+ int len = Math.min(str.length(), %d);
+ for (int i=0; i> 8) ^ (tmp << 8) ^ (tmp << 3) ^ (tmp >> 4);
+ crc = crc & 0xffff;
+ });
+ return crc;
+
+}
+
+mavlink.WIRE_PROTOCOL_VERSION = "${WIRE_PROTOCOL_VERSION}";
+
+mavlink.MAVLINK_TYPE_CHAR = 0
+mavlink.MAVLINK_TYPE_UINT8_T = 1
+mavlink.MAVLINK_TYPE_INT8_T = 2
+mavlink.MAVLINK_TYPE_UINT16_T = 3
+mavlink.MAVLINK_TYPE_INT16_T = 4
+mavlink.MAVLINK_TYPE_UINT32_T = 5
+mavlink.MAVLINK_TYPE_INT32_T = 6
+mavlink.MAVLINK_TYPE_UINT64_T = 7
+mavlink.MAVLINK_TYPE_INT64_T = 8
+mavlink.MAVLINK_TYPE_FLOAT = 9
+mavlink.MAVLINK_TYPE_DOUBLE = 10
+
+// Mavlink headers incorporate sequence, source system (platform) and source component.
+mavlink.header = function(msgId, mlen, seq, srcSystem, srcComponent) {
+
+ this.mlen = ( typeof mlen === 'undefined' ) ? 0 : mlen;
+ this.seq = ( typeof seq === 'undefined' ) ? 0 : seq;
+ this.srcSystem = ( typeof srcSystem === 'undefined' ) ? 0 : srcSystem;
+ this.srcComponent = ( typeof srcComponent === 'undefined' ) ? 0 : srcComponent;
+ this.msgId = msgId
+
+}
+
+mavlink.header.prototype.pack = function() {
+ return jspack.Pack('BBBBBB', [${PROTOCOL_MARKER}, this.mlen, this.seq, this.srcSystem, this.srcComponent, this.msgId]);
+}
+
+// Base class declaration: mavlink.message will be the parent class for each
+// concrete implementation in mavlink.messages.
+mavlink.message = function() {};
+
+// Convenience setter to facilitate turning the unpacked array of data into member properties
+mavlink.message.prototype.set = function(args) {
+ _.each(this.fieldnames, function(e, i) {
+ this[e] = args[i];
+ }, this);
+};
+
+// This pack function builds the header and produces a complete MAVLink message,
+// including header and message CRC.
+mavlink.message.prototype.pack = function(mav, crc_extra, payload) {
+
+ this.payload = payload;
+ this.header = new mavlink.header(this.id, payload.length, mav.seq, mav.srcSystem, mav.srcComponent);
+ this.msgbuf = this.header.pack().concat(payload);
+ var crc = mavlink.x25Crc(this.msgbuf.slice(1));
+
+ // For now, assume always using crc_extra = True. TODO: check/fix this.
+ crc = mavlink.x25Crc([crc_extra], crc);
+ this.msgbuf = this.msgbuf.concat(jspack.Pack('= 1 && this.buf[0] != 254 ) {
+
+ // Strip the offending initial byte and throw an error.
+ var badPrefix = this.buf[0];
+ this.bufInError = this.buf.slice(0,1);
+ this.buf = this.buf.slice(1);
+ this.expected_length = 6;
+
+ // TODO: enable subsequent prefix error suppression if robust_parsing is implemented
+ //if(!this.have_prefix_error) {
+ // this.have_prefix_error = true;
+ throw new Error("Bad prefix ("+badPrefix+")");
+ //}
+
+ }
+ //else if( this.buf.length >= 1 && this.buf[0] == 254 ) {
+ // this.have_prefix_error = false;
+ //}
+
+}
+
+// Determine the length. Leaves buffer untouched.
+MAVLink.prototype.parseLength = function() {
+
+ if( this.buf.length >= 2 ) {
+ var unpacked = jspack.Unpack('BB', this.buf.slice(0, 2));
+ this.expected_length = unpacked[1] + 8; // length of message + header + CRC
+ }
+
+}
+
+// input some data bytes, possibly returning a new message
+MAVLink.prototype.parseChar = function(c) {
+
+ var m = null;
+
+ try {
+
+ this.pushBuffer(c);
+ this.parsePrefix();
+ this.parseLength();
+ m = this.parsePayload();
+
+ } catch(e) {
+
+ this.log('error', e.message);
+ this.total_receive_errors += 1;
+ m = new mavlink.messages.bad_data(this.bufInError, e.message);
+ this.bufInError = new Buffer(0);
+
+ }
+
+ if(null != m) {
+ this.emit(m.name, m);
+ this.emit('message', m);
+ }
+
+ return m;
+
+}
+
+MAVLink.prototype.parsePayload = function() {
+
+ var m = null;
+
+ // If we have enough bytes to try and read it, read it.
+ if( this.expected_length >= 8 && this.buf.length >= this.expected_length ) {
+
+ // Slice off the expected packet length, reset expectation to be to find a header.
+ var mbuf = this.buf.slice(0, this.expected_length);
+ // TODO: slicing off the buffer should depend on the error produced by the decode() function
+ // - if a message we find a well formed message, cut-off the expected_length
+ // - if the message is not well formed (correct prefix by accident), cut-off 1 char only
+ this.buf = this.buf.slice(this.expected_length);
+ this.expected_length = 6;
+
+ // w.info("Attempting to parse packet, message candidate buffer is ["+mbuf.toByteArray()+"]");
+
+ try {
+ m = this.decode(mbuf);
+ this.total_packets_received += 1;
+ }
+ catch(e) {
+ // Set buffer in question and re-throw to generic error handling
+ this.bufInError = mbuf;
+ throw e;
+ }
+ }
+
+ return m;
+
+}
+
+// input some data bytes, possibly returning an array of new messages
+MAVLink.prototype.parseBuffer = function(s) {
+
+ // Get a message, if one is available in the stream.
+ var m = this.parseChar(s);
+
+ // No messages available, bail.
+ if ( null === m ) {
+ return null;
+ }
+
+ // While more valid messages can be read from the existing buffer, add
+ // them to the array of new messages and return them.
+ var ret = [m];
+ while(true) {
+ m = this.parseChar();
+ if ( null === m ) {
+ // No more messages left.
+ return ret;
+ }
+ ret.push(m);
+ }
+ return ret;
+
+}
+
+/* decode a buffer as a MAVLink message */
+MAVLink.prototype.decode = function(msgbuf) {
+
+ var magic, mlen, seq, srcSystem, srcComponent, unpacked, msgId;
+
+ // decode the header
+ try {
+ unpacked = jspack.Unpack('cBBBBB', msgbuf.slice(0, 6));
+ magic = unpacked[0];
+ mlen = unpacked[1];
+ seq = unpacked[2];
+ srcSystem = unpacked[3];
+ srcComponent = unpacked[4];
+ msgId = unpacked[5];
+ }
+ catch(e) {
+ throw new Error('Unable to unpack MAVLink header: ' + e.message);
+ }
+
+ if (magic.charCodeAt(0) != 254) {
+ throw new Error("Invalid MAVLink prefix ("+magic.charCodeAt(0)+")");
+ }
+
+ if( mlen != msgbuf.length - 8 ) {
+ throw new Error("Invalid MAVLink message length. Got " + (msgbuf.length - 8) + " expected " + mlen + ", msgId=" + msgId);
+ }
+
+ if( false === _.has(mavlink.map, msgId) ) {
+ throw new Error("Unknown MAVLink message ID (" + msgId + ")");
+ }
+
+ // decode the payload
+ // refs: (fmt, type, order_map, crc_extra) = mavlink.map[msgId]
+ var decoder = mavlink.map[msgId];
+
+ // decode the checksum
+ try {
+ var receivedChecksum = jspack.Unpack('
+
+/*!
+ Method called on the delegate when a full message has been received. Note that this may be called multiple times when parseData: is called, if the data passed to parseData: contains multiple messages.
+
+ @param mavlink The MVMavlink object calling this method
+ @param message The id class containing the parsed message
+ */
+- (void)mavlink:(MVMavlink *)mavlink didGetMessage:(id)message;
+
+/*!
+ Method called on the delegate when data should be sent.
+
+ @param mavlink The MVMavlink object calling this method
+ @param data NSData object containing the bytes to be sent
+ */
+- (BOOL)mavlink:(MVMavlink *)mavlink shouldWriteData:(NSData *)data;
+
+@end
+
+/*!
+ Class for parsing and sending instances of id
+
+ @discussion MVMavlink receives a stream of bytes via the parseData: method and calls the delegate method mavlink:didGetMessage: each time a message is fully parsed. Users of MVMavlink can call parseData: anytime they get new data, even if that data does not contain a complete message.
+ */
+@interface MVMavlink : NSObject
+@property (weak, nonatomic) id delegate;
+
+/*!
+ Parse byte data received from a MAVLink byte stream.
+
+ @param data NSData containing the received bytes
+ */
+- (void)parseData:(NSData *)data;
+
+/*!
+ Compile MVMessage object into a bytes and pass to the delegate for sending.
+
+ @param message Object conforming to the MVMessage protocol that represents the data to be sent
+ @return YES if message sending was successful
+ */
+- (BOOL)sendMessage:(id)message;
+
+@end
+''', xml)
+ f.close()
+ f = open(os.path.join(directory, "MVMavlink.m"), mode='w')
+ t.write(f,'''
+//
+// MVMavlink.m
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+#import "MVMavlink.h"
+
+@implementation MVMavlink
+
+- (void)parseData:(NSData *)data {
+ mavlink_message_t msg;
+ mavlink_status_t status;
+ char *bytes = (char *)[data bytes];
+
+ for (NSInteger i = 0; i < [data length]; ++i) {
+ if (mavlink_parse_char(MAVLINK_COMM_0, bytes[i], &msg, &status)) {
+ // Packet received
+ id message = [MVMessage messageWithCMessage:msg];
+ [_delegate mavlink:self didGetMessage:message];
+ }
+ }
+}
+
+- (BOOL)sendMessage:(id)message {
+ return [_delegate mavlink:self shouldWriteData:[message data]];
+}
+
+@end
+''', xml)
+ f.close()
+
+def generate_base_message(directory, xml):
+ '''Generate base MVMessage header and implementation'''
+ f = open(os.path.join(directory, 'MVMessage.h'), mode='w')
+ t.write(f, '''
+//
+// MVMessage.h
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+#import "mavlink.h"
+
+@protocol MVMessage
+- (id)initWithCMessage:(mavlink_message_t)message;
+- (NSData *)data;
+@property (readonly, nonatomic) mavlink_message_t message;
+@end
+
+@interface MVMessage : NSObject {
+ mavlink_message_t _message;
+}
+
+/*!
+ Create an MVMessage subclass from a mavlink_message_t.
+
+ @param message Struct containing the details of the message
+ @result MVMessage or subclass representing the message
+ */
++ (id)messageWithCMessage:(mavlink_message_t)message;
+
+//! System ID of the sender of the message.
+- (uint8_t)systemId;
+
+//! Component ID of the sender of the message.
+- (uint8_t)componentId;
+
+//! Message ID of this message.
+- (uint8_t)messageId;
+
+@end
+''', xml)
+ f.close()
+ f = open(os.path.join(directory, 'MVMessage.m'), mode='w')
+ t.write(f, '''
+//
+// MVMessage.m
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+#import "MVMessage.h"
+${{message_definition_files:#import "MV${name_camel_case}Messages.h"
+}}
+
+@implementation MVMessage
+
+@synthesize message=_message;
+
++ (id)messageWithCMessage:(mavlink_message_t)message {
+ static NSDictionary *messageIdToClass = nil;
+ if (!messageIdToClass) {
+ messageIdToClass = @{
+${{message: @${id} : [MVMessage${name_camel_case} class],
+}}
+ };
+ }
+
+ Class messageClass = messageIdToClass[@(message.msgid)];
+ // Store unknown messages to MVMessage
+ if (!messageClass) {
+ messageClass = [MVMessage class];
+ }
+
+ return [[messageClass alloc] initWithCMessage:message];
+}
+
+- (id)initWithCMessage:(mavlink_message_t)message {
+ if ((self = [super init])) {
+ self->_message = message;
+ }
+ return self;
+}
+
+- (NSData *)data {
+ uint8_t buffer[MAVLINK_MAX_PACKET_LEN];
+
+ NSInteger length = mavlink_msg_to_send_buffer(buffer, &self->_message);
+
+ return [NSData dataWithBytes:buffer length:length];
+}
+
+- (uint8_t)systemId {
+ return self->_message.sysid;
+}
+
+- (uint8_t)componentId {
+ return self->_message.compid;
+}
+
+- (uint8_t)messageId {
+ return self->_message.msgid;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"%@, systemId=%d, componentId=%d", [self class], self.systemId, self.componentId];
+}
+
+@end
+''', xml)
+ f.close()
+
+def generate_message_definitions_h(directory, xml):
+ '''generate headerfile containing includes for all messages'''
+ f = open(os.path.join(directory, "MV" + camel_case_from_underscores(xml.basename) + "Messages.h"), mode='w')
+ t.write(f, '''
+//
+// MV${basename_camel_case}Messages.h
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+${{message:#import "MVMessage${name_camel_case}.h"
+}}
+''', xml)
+ f.close()
+
+def generate_message(directory, m):
+ '''generate per-message header and implementation file'''
+ f = open(os.path.join(directory, 'MVMessage%s.h' % m.name_camel_case), mode='w')
+ t.write(f, '''
+//
+// MVMessage${name_camel_case}.h
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+#import "MVMessage.h"
+
+/*!
+ Class that represents a ${name} Mavlink message.
+
+ @discussion ${description}
+ */
+@interface MVMessage${name_camel_case} : MVMessage
+
+- (id)initWithSystemId:(uint8_t)systemId componentId:(uint8_t)componentId${{arg_fields: ${name_lower_camel_case}:(${arg_type}${array_prefix})${name_lower_camel_case}}};
+
+${{fields://! ${description}
+- (${return_type})${name_lower_camel_case}${get_arg_objc};
+
+}}
+@end
+''', m)
+ f.close()
+ f = open(os.path.join(directory, 'MVMessage%s.m' % m.name_camel_case), mode='w')
+ t.write(f, '''
+//
+// MVMessage${name_camel_case}.m
+// MAVLink communications protocol built from ${basename}.xml
+//
+// Created by mavgen_objc.py
+// http://qgroundcontrol.org/mavlink
+//
+
+#import "MVMessage${name_camel_case}.h"
+
+@implementation MVMessage${name_camel_case}
+
+- (id)initWithSystemId:(uint8_t)systemId componentId:(uint8_t)componentId${{arg_fields: ${name_lower_camel_case}:(${arg_type}${array_prefix})${name_lower_camel_case}}} {
+ if ((self = [super init])) {
+ mavlink_msg_${name_lower}_pack(systemId, componentId, &(self->_message)${{arg_fields:, ${name_lower_camel_case}}});
+ }
+ return self;
+}
+
+${{fields:- (${return_type})${name_lower_camel_case}${get_arg_objc} {
+ ${return_method_implementation}
+}
+
+}}
+- (NSString *)description {
+ return [NSString stringWithFormat:@"%@${{fields:, ${name_lower_camel_case}=${print_format}}}", [super description]${{fields:, ${get_message}}}];
+}
+
+@end
+''', m)
+ f.close()
+
+def camel_case_from_underscores(string):
+ """generate a CamelCase string from an underscore_string."""
+ components = string.split('_')
+ string = ''
+ for component in components:
+ string += component[0].upper() + component[1:]
+ return string
+
+def lower_camel_case_from_underscores(string):
+ """generate a lower-cased camelCase string from an underscore_string.
+ For example: my_variable_name -> myVariableName"""
+ components = string.split('_')
+ string = components[0]
+ for component in components[1:]:
+ string += component[0].upper() + component[1:]
+ return string
+
+def generate_shared(basename, xml_list):
+ # Create a dictionary to hold all the values we want to use in the templates
+ template_dict = {}
+ template_dict['parse_time'] = xml_list[0].parse_time
+ template_dict['message'] = []
+ template_dict['message_definition_files'] = []
+
+ print("Generating Objective-C implementation in directory %s" % basename)
+ mavparse.mkdir_p(basename)
+
+ for xml in xml_list:
+ template_dict['message'].extend(xml.message)
+ basename_camel_case = camel_case_from_underscores(xml.basename)
+ template_dict['message_definition_files'].append({'name_camel_case': basename_camel_case})
+ if not template_dict.get('basename', None):
+ template_dict['basename'] = xml.basename
+ else:
+ template_dict['basename'] = template_dict['basename'] + ', ' + xml.basename
+
+ # Sort messages by ID
+ template_dict['message'] = sorted(template_dict['message'], key = lambda message : message.id)
+
+ # Add name_camel_case to each message object
+ for message in template_dict['message']:
+ message.name_camel_case = camel_case_from_underscores(message.name_lower)
+
+ generate_mavlink(basename, template_dict)
+ generate_base_message(basename, template_dict)
+
+def generate_message_definitions(basename, xml):
+ '''generate files for one XML file'''
+
+ directory = os.path.join(basename, xml.basename)
+
+ print("Generating Objective-C implementation in directory %s" % directory)
+ mavparse.mkdir_p(directory)
+
+ xml.basename_camel_case = camel_case_from_underscores(xml.basename)
+
+ # Add some extra field attributes for convenience
+ for m in xml.message:
+ m.basename = xml.basename
+ m.parse_time = xml.parse_time
+ m.name_camel_case = camel_case_from_underscores(m.name_lower)
+ for f in m.fields:
+ f.name_lower_camel_case = lower_camel_case_from_underscores(f.name);
+ f.get_message = "[self %s]" % f.name_lower_camel_case
+ f.return_method_implementation = ''
+ f.array_prefix = ''
+ f.array_return_arg = ''
+ f.get_arg = ''
+ f.get_arg_objc = ''
+ if f.enum:
+ f.return_type = f.enum
+ f.arg_type = f.enum
+ else:
+ f.return_type = f.type
+ f.arg_type = f.type
+ if f.print_format is None:
+ if f.array_length != 0:
+ f.print_format = "%@"
+ elif f.type.startswith('uint64_t'):
+ f.print_format = "%lld"
+ elif f.type.startswith('uint') or f.type.startswith('int'):
+ f.print_format = "%d"
+ elif f.type.startswith('float'):
+ f.print_format = "%f"
+ elif f.type.startswith('char'):
+ f.print_format = "%c"
+ else:
+ print("print_format unsupported for type %s" % f.type)
+ if f.array_length != 0:
+ f.get_message = '@"[array of %s[%d]]"' % (f.type, f.array_length)
+ f.array_prefix = ' *'
+ f.array_return_arg = '%s, %u, ' % (f.name, f.array_length)
+ f.return_type = 'uint16_t'
+ f.get_arg = ', %s' % (f.name)
+ f.get_arg_objc = ':(%s *)%s' % (f.type, f.name)
+ if f.type == 'char':
+ # Special handling for strings (assumes all char arrays are strings)
+ f.return_type = 'NSString *'
+ f.get_arg_objc = ''
+ f.get_message = "[self %s]" % f.name_lower_camel_case
+ f.return_method_implementation = \
+"""char string[%(array_length)d];
+ mavlink_msg_%(message_name_lower)s_get_%(name)s(&(self->_message), (char *)&string);
+ return [[NSString alloc] initWithBytes:string length:%(array_length)d encoding:NSASCIIStringEncoding];""" % {'array_length': f.array_length, 'message_name_lower': m.name_lower, 'name': f.name}
+
+ if not f.return_method_implementation:
+ f.return_method_implementation = \
+"""return mavlink_msg_%(message_name_lower)s_get_%(name)s(&(self->_message)%(get_arg)s);""" % {'message_name_lower': m.name_lower, 'name': f.name, 'get_arg': f.get_arg}
+
+ for m in xml.message:
+ m.arg_fields = []
+ for f in m.fields:
+ if not f.omit_arg:
+ m.arg_fields.append(f)
+
+ generate_message_definitions_h(directory, xml)
+ for m in xml.message:
+ generate_message(directory, m)
+
+
+def generate(basename, xml_list):
+ '''generate complete MAVLink Objective-C implemenation'''
+
+ generate_shared(basename, xml_list)
+ for xml in xml_list:
+ generate_message_definitions(basename, xml)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_python.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_python.py
new file mode 100644
index 000000000..46dc5ecc9
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_python.py
@@ -0,0 +1,845 @@
+#!/usr/bin/env python
+'''
+parse a MAVLink protocol XML file and generate a python implementation
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import sys, textwrap, os
+from . import mavparse, mavtemplate
+
+t = mavtemplate.MAVTemplate()
+
+def generate_preamble(outf, msgs, basename, args, xml):
+ print("Generating preamble")
+ t.write(outf, """
+'''
+MAVLink protocol implementation (auto-generated by mavgen.py)
+
+Generated from: ${FILELIST}
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import struct, array, time, json, os, sys, platform
+
+from ...generator.mavcrc import x25crc
+import hashlib
+
+WIRE_PROTOCOL_VERSION = '${WIRE_PROTOCOL_VERSION}'
+DIALECT = '${DIALECT}'
+
+PROTOCOL_MARKER_V1 = 0xFE
+PROTOCOL_MARKER_V2 = 0xFD
+HEADER_LEN_V1 = 6
+HEADER_LEN_V2 = 10
+
+MAVLINK_SIGNATURE_BLOCK_LEN = 13
+
+MAVLINK_IFLAG_SIGNED = 0x01
+
+native_supported = platform.system() != 'Windows' # Not yet supported on other dialects
+native_force = 'MAVNATIVE_FORCE' in os.environ # Will force use of native code regardless of what client app wants
+native_testing = 'MAVNATIVE_TESTING' in os.environ # Will force both native and legacy code to be used and their results compared
+
+if native_supported and float(WIRE_PROTOCOL_VERSION) <= 1:
+ try:
+ import mavnative
+ except ImportError:
+ print('ERROR LOADING MAVNATIVE - falling back to python implementation')
+ native_supported = False
+else:
+ # mavnative isn't supported for MAVLink2 yet
+ native_supported = False
+
+# some base types from mavlink_types.h
+MAVLINK_TYPE_CHAR = 0
+MAVLINK_TYPE_UINT8_T = 1
+MAVLINK_TYPE_INT8_T = 2
+MAVLINK_TYPE_UINT16_T = 3
+MAVLINK_TYPE_INT16_T = 4
+MAVLINK_TYPE_UINT32_T = 5
+MAVLINK_TYPE_INT32_T = 6
+MAVLINK_TYPE_UINT64_T = 7
+MAVLINK_TYPE_INT64_T = 8
+MAVLINK_TYPE_FLOAT = 9
+MAVLINK_TYPE_DOUBLE = 10
+
+
+class MAVLink_header(object):
+ '''MAVLink message header'''
+ def __init__(self, msgId, incompat_flags=0, compat_flags=0, mlen=0, seq=0, srcSystem=0, srcComponent=0):
+ self.mlen = mlen
+ self.seq = seq
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.msgId = msgId
+ self.incompat_flags = incompat_flags
+ self.compat_flags = compat_flags
+
+ def pack(self, force_mavlink1=False):
+ if WIRE_PROTOCOL_VERSION == '2.0' and not force_mavlink1:
+ return struct.pack('>16)
+ return struct.pack(' 1 and payload[plen-1] == chr(0):
+ plen -= 1
+ self._payload = payload[:plen]
+ incompat_flags = 0
+ if mav.signing.sign_outgoing:
+ incompat_flags |= MAVLINK_IFLAG_SIGNED
+ self._header = MAVLink_header(self._header.msgId,
+ incompat_flags=incompat_flags, compat_flags=0,
+ mlen=len(self._payload), seq=mav.seq,
+ srcSystem=mav.srcSystem, srcComponent=mav.srcComponent)
+ self._msgbuf = self._header.pack(force_mavlink1=force_mavlink1) + self._payload
+ crc = x25crc(self._msgbuf[1:])
+ if ${crc_extra}: # using CRC extra
+ crc.accumulate_str(struct.pack('B', crc_extra))
+ self._crc = crc.crc
+ self._msgbuf += struct.pack(' 1):
+ for i in range(field.array_length):
+ outf.write(", self.{0:s}[{1:d}]".format(field.name,i))
+ else:
+ outf.write(", self.{0:s}".format(field.name))
+ outf.write("), force_mavlink1=force_mavlink1)\n")
+
+
+def native_mavfmt(field):
+ '''work out the struct format for a type (in a form expected by mavnative)'''
+ map = {
+ 'float' : 'f',
+ 'double' : 'd',
+ 'char' : 'c',
+ 'int8_t' : 'b',
+ 'uint8_t' : 'B',
+ 'uint8_t_mavlink_version' : 'v',
+ 'int16_t' : 'h',
+ 'uint16_t' : 'H',
+ 'int32_t' : 'i',
+ 'uint32_t' : 'I',
+ 'int64_t' : 'q',
+ 'uint64_t' : 'Q',
+ }
+ return map[field.type]
+
+def mavfmt(field):
+ '''work out the struct format for a type'''
+ map = {
+ 'float' : 'f',
+ 'double' : 'd',
+ 'char' : 'c',
+ 'int8_t' : 'b',
+ 'uint8_t' : 'B',
+ 'uint8_t_mavlink_version' : 'B',
+ 'int16_t' : 'h',
+ 'uint16_t' : 'H',
+ 'int32_t' : 'i',
+ 'uint32_t' : 'I',
+ 'int64_t' : 'q',
+ 'uint64_t' : 'Q',
+ }
+
+ if field.array_length:
+ if field.type == 'char':
+ return str(field.array_length)+'s'
+ return str(field.array_length)+map[field.type]
+ return map[field.type]
+
+def generate_mavlink_class(outf, msgs, xml):
+ print("Generating MAVLink class")
+
+ outf.write("\n\nmavlink_map = {\n");
+ for m in msgs:
+ outf.write(" MAVLINK_MSG_ID_%s : MAVLink_%s_message,\n" % (
+ m.name.upper(), m.name.lower()))
+ outf.write("}\n\n")
+
+ t.write(outf, """
+class MAVError(Exception):
+ '''MAVLink error class'''
+ def __init__(self, msg):
+ Exception.__init__(self, msg)
+ self.message = msg
+
+class MAVString(str):
+ '''NUL terminated string'''
+ def __init__(self, s):
+ str.__init__(self)
+ def __str__(self):
+ i = self.find(chr(0))
+ if i == -1:
+ return self[:]
+ return self[0:i]
+
+class MAVLink_bad_data(MAVLink_message):
+ '''
+ a piece of bad data in a mavlink stream
+ '''
+ def __init__(self, data, reason):
+ MAVLink_message.__init__(self, MAVLINK_MSG_ID_BAD_DATA, 'BAD_DATA')
+ self._fieldnames = ['data', 'reason']
+ self.data = data
+ self.reason = reason
+ self._msgbuf = data
+
+ def __str__(self):
+ '''Override the __str__ function from MAVLink_messages because non-printable characters are common in to be the reason for this message to exist.'''
+ return '%s {%s, data:%s}' % (self._type, self.reason, [('%x' % ord(i) if isinstance(i, str) else '%x' % i) for i in self.data])
+
+class MAVLinkSigning(object):
+ '''MAVLink signing state class'''
+ def __init__(self):
+ self.secret_key = None
+ self.timestamp = 0
+ self.link_id = 0
+ self.sign_outgoing = False
+ self.allow_unsigned_callback = None
+ self.stream_timestamps = {}
+ self.badsig_count = 0
+ self.goodsig_count = 0
+ self.unsigned_count = 0
+ self.reject_count = 0
+
+class MAVLink(object):
+ '''MAVLink protocol handling class'''
+ def __init__(self, file, srcSystem=0, srcComponent=0, use_native=False):
+ self.seq = 0
+ self.file = file
+ self.srcSystem = srcSystem
+ self.srcComponent = srcComponent
+ self.callback = None
+ self.callback_args = None
+ self.callback_kwargs = None
+ self.send_callback = None
+ self.send_callback_args = None
+ self.send_callback_kwargs = None
+ self.buf = bytearray()
+ self.buf_index = 0
+ self.expected_length = HEADER_LEN_V1+2
+ self.have_prefix_error = False
+ self.robust_parsing = False
+ self.protocol_marker = ${protocol_marker}
+ self.little_endian = ${little_endian}
+ self.crc_extra = ${crc_extra}
+ self.sort_fields = ${sort_fields}
+ self.total_packets_sent = 0
+ self.total_bytes_sent = 0
+ self.total_packets_received = 0
+ self.total_bytes_received = 0
+ self.total_receive_errors = 0
+ self.startup_time = time.time()
+ self.signing = MAVLinkSigning()
+ if native_supported and (use_native or native_testing or native_force):
+ print("NOTE: mavnative is currently beta-test code")
+ self.native = mavnative.NativeConnection(MAVLink_message, mavlink_map)
+ else:
+ self.native = None
+ if native_testing:
+ self.test_buf = bytearray()
+
+ def set_callback(self, callback, *args, **kwargs):
+ self.callback = callback
+ self.callback_args = args
+ self.callback_kwargs = kwargs
+
+ def set_send_callback(self, callback, *args, **kwargs):
+ self.send_callback = callback
+ self.send_callback_args = args
+ self.send_callback_kwargs = kwargs
+
+ def send(self, mavmsg, force_mavlink1=False):
+ '''send a MAVLink message'''
+ buf = mavmsg.pack(self, force_mavlink1=force_mavlink1)
+ self.file.write(buf)
+ self.seq = (self.seq + 1) % 256
+ self.total_packets_sent += 1
+ self.total_bytes_sent += len(buf)
+ if self.send_callback:
+ self.send_callback(mavmsg, *self.send_callback_args, **self.send_callback_kwargs)
+
+ def buf_len(self):
+ return len(self.buf) - self.buf_index
+
+ def bytes_needed(self):
+ '''return number of bytes needed for next parsing stage'''
+ if self.native:
+ ret = self.native.expected_length - self.buf_len()
+ else:
+ ret = self.expected_length - self.buf_len()
+
+ if ret <= 0:
+ return 1
+ return ret
+
+ def __parse_char_native(self, c):
+ '''this method exists only to see in profiling results'''
+ m = self.native.parse_chars(c)
+ return m
+
+ def __callbacks(self, msg):
+ '''this method exists only to make profiling results easier to read'''
+ if self.callback:
+ self.callback(msg, *self.callback_args, **self.callback_kwargs)
+
+ def parse_char(self, c):
+ '''input some data bytes, possibly returning a new message'''
+ self.buf.extend(c)
+
+ self.total_bytes_received += len(c)
+
+ if self.native:
+ if native_testing:
+ self.test_buf.extend(c)
+ m = self.__parse_char_native(self.test_buf)
+ m2 = self.__parse_char_legacy()
+ if m2 != m:
+ print("Native: %s\\nLegacy: %s\\n" % (m, m2))
+ raise Exception('Native vs. Legacy mismatch')
+ else:
+ m = self.__parse_char_native(self.buf)
+ else:
+ m = self.__parse_char_legacy()
+
+ if m != None:
+ self.total_packets_received += 1
+ self.__callbacks(m)
+ else:
+ # XXX The idea here is if we've read something and there's nothing left in
+ # the buffer, reset it to 0 which frees the memory
+ if self.buf_len() == 0 and self.buf_index != 0:
+ self.buf = bytearray()
+ self.buf_index = 0
+
+ return m
+
+ def __parse_char_legacy(self):
+ '''input some data bytes, possibly returning a new message (uses no native code)'''
+ header_len = HEADER_LEN_V1
+ if self.buf_len() >= 1 and self.buf[self.buf_index] == PROTOCOL_MARKER_V2:
+ header_len = HEADER_LEN_V2
+
+ if self.buf_len() >= 1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V1 and self.buf[self.buf_index] != PROTOCOL_MARKER_V2:
+ magic = self.buf[self.buf_index]
+ self.buf_index += 1
+ if self.robust_parsing:
+ m = MAVLink_bad_data(chr(magic), 'Bad prefix')
+ self.expected_length = header_len+2
+ self.total_receive_errors += 1
+ return m
+ if self.have_prefix_error:
+ return None
+ self.have_prefix_error = True
+ self.total_receive_errors += 1
+ raise MAVError("invalid MAVLink prefix '%s'" % magic)
+ self.have_prefix_error = False
+ if self.buf_len() >= 3:
+ sbuf = self.buf[self.buf_index:3+self.buf_index]
+ if sys.version_info[0] < 3:
+ sbuf = str(sbuf)
+ (magic, self.expected_length, incompat_flags) = struct.unpack('BBB', sbuf)
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & MAVLINK_IFLAG_SIGNED):
+ self.expected_length += MAVLINK_SIGNATURE_BLOCK_LEN
+ self.expected_length += header_len + 2
+ if self.expected_length >= (header_len+2) and self.buf_len() >= self.expected_length:
+ mbuf = array.array('B', self.buf[self.buf_index:self.buf_index+self.expected_length])
+ self.buf_index += self.expected_length
+ self.expected_length = header_len+2
+ if self.robust_parsing:
+ try:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ except MAVError as reason:
+ m = MAVLink_bad_data(mbuf, reason.message)
+ self.total_receive_errors += 1
+ else:
+ if magic == PROTOCOL_MARKER_V2 and (incompat_flags & ~MAVLINK_IFLAG_SIGNED) != 0:
+ raise MAVError('invalid incompat_flags 0x%x 0x%x %u' % (incompat_flags, magic, self.expected_length))
+ m = self.decode(mbuf)
+ return m
+ return None
+
+ def parse_buffer(self, s):
+ '''input some data bytes, possibly returning a list of new messages'''
+ m = self.parse_char(s)
+ if m is None:
+ return None
+ ret = [m]
+ while True:
+ m = self.parse_char("")
+ if m is None:
+ return ret
+ ret.append(m)
+ return ret
+
+ def check_signature(self, msgbuf, srcSystem, srcComponent):
+ '''check signature on incoming message'''
+ if isinstance(msgbuf, array.array):
+ msgbuf = msgbuf.tostring()
+ timestamp_buf = msgbuf[-12:-6]
+ link_id = msgbuf[-13]
+ (tlow, thigh) = struct.unpack(' String = { (let name, var value) in
+ value = value is String ? "\\"\(value)\\"" : value
+ return "\(name): \(value)"
+ }
+ let fieldsDescription = ", ".join(allFields.map(describeField))
+ return "\(self.dynamicType)(\(fieldsDescription))"
+ }
+
+ public var debugDescription: String {
+ let describeFieldVerbose: ((String, Any)) -> String = { (let name, var value) in
+ value = value is String ? "\\"\(value)\\"" : value
+ let (_, _, _, description) = Self.fieldsInfo.filter { $0.0 == name }.first!
+ return "\(name) = \(value) : \(description)"
+ }
+ let fieldsDescription = "\\n\\t".join(allFields.map(describeFieldVerbose))
+ return "\(Self.typeName): \(Self.typeDescription)\\nFields:\\n\\t\(fieldsDescription)"
+ }
+
+ public var allFields: [(String, Any)] {
+ var result: [(String, Any)] = []
+ let mirror = reflect(self)
+ for i in 0.. 0:
+ if field.return_type == "String":
+ # handle strings
+ field.initial_value = "data." + swift_types[field.type][2] % (field.wire_offset, field.array_length)
+ else:
+ # other array types
+ field.return_type = "[%s]" % field.return_type
+ field.initial_value = "try data.mavArray(offset: %u, count: %u)" % (field.wire_offset, field.array_length)
+ else:
+ # simple type field
+ field.initial_value = "try data." + swift_types[field.type][2] % field.wire_offset
+
+ field.formatted_description = ""
+ if field.description:
+ field.description = " ".join(field.description.split())
+ field.formatted_description = "\n\t/// " + field.description + "\n"
+
+ fields_info = map(lambda field: '("%s", %u, "%s", "%s")' % (field.swift_name, field.wire_offset, field.return_type, field.description.replace('"','\\"')), msg.fields)
+ msg.fields_info = ", ".join(fields_info)
+
+ msgs.sort(key = lambda msg : msg.id)
+
+def generate(basename, xml_list):
+ """Generate complete MAVLink Swift implemenation"""
+
+ if os.path.isdir(basename):
+ filename = os.path.join(basename, 'MAVLink.swift')
+ else:
+ filename = basename
+
+ msgs = []
+ enums = []
+ filelist = []
+ for xml in xml_list:
+ msgs.extend(xml.message)
+ enums.extend(xml.enum)
+ filelist.append(os.path.basename(xml.filename))
+
+ outf = open(filename, "w")
+ generate_header(outf, filelist, xml_list)
+ generate_enums_info(enums, msgs)
+ generate_enums(outf, enums, msgs)
+ generate_messages_info(msgs)
+ generate_messages(outf, msgs)
+ append_static_code('Parser.swift', outf)
+ generate_message_mappings_array(outf, msgs)
+ generate_message_lengths_array(outf, msgs)
+ generate_message_crc_extra_array(outf, msgs)
+ outf.close()
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_wlua.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_wlua.py
new file mode 100644
index 000000000..a27c8fd43
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavgen_wlua.py
@@ -0,0 +1,348 @@
+#!/usr/bin/env python
+'''
+parse a MAVLink protocol XML file and generate a Wireshark LUA dissector
+
+Copyright Holger Steinhaus 2012
+Released under GNU GPL version 3 or later
+
+Instructions for use:
+1. python -m pymavlink.generator.mavgen --lang=wlua mymavlink.xml -o ~/.wireshark/plugins/mymavlink.lua
+2. convert binary stream int .pcap file format (see ../examples/mav2pcap.py)
+3. open the pcap file in Wireshark
+'''
+
+import sys, textwrap, os, re
+from . import mavparse, mavtemplate
+
+t = mavtemplate.MAVTemplate()
+
+
+def lua_type(mavlink_type):
+ # qnd typename conversion
+ if (mavlink_type=='char'):
+ lua_t = 'uint8'
+ else:
+ lua_t = mavlink_type.replace('_t', '')
+ return lua_t
+
+def type_size(mavlink_type):
+ # infer size of mavlink types
+ re_int = re.compile('^(u?)int(8|16|32|64)_t$')
+ int_parts = re_int.findall(mavlink_type)
+ if len(int_parts):
+ return int(int_parts[0][1])/8
+ elif mavlink_type == 'float':
+ return 4
+ elif mavlink_type == 'double':
+ return 8
+ elif mavlink_type == 'char':
+ return 1
+ else:
+ raise Exception('unsupported MAVLink type - please fix me')
+
+
+def mavfmt(field):
+ '''work out the struct format for a type'''
+ map = {
+ 'float' : 'f',
+ 'double' : 'd',
+ 'char' : 'c',
+ 'int8_t' : 'b',
+ 'uint8_t' : 'B',
+ 'uint8_t_mavlink_version' : 'B',
+ 'int16_t' : 'h',
+ 'uint16_t' : 'H',
+ 'int32_t' : 'i',
+ 'uint32_t' : 'I',
+ 'int64_t' : 'q',
+ 'uint64_t' : 'Q',
+ }
+
+ if field.array_length:
+ if field.type in ['char', 'int8_t', 'uint8_t']:
+ return str(field.array_length)+'s'
+ return str(field.array_length)+map[field.type]
+ return map[field.type]
+
+
+def generate_preamble(outf):
+ print("Generating preamble")
+ t.write(outf,
+"""
+-- Wireshark dissector for the MAVLink protocol (please see http://qgroundcontrol.org/mavlink/start for details)
+
+mavlink_proto = Proto("mavlink_proto", "MAVLink protocol")
+f = mavlink_proto.fields
+
+payload_fns = {}
+
+""" )
+
+
+def generate_body_fields(outf):
+ t.write(outf,
+"""
+f.magic = ProtoField.uint8("mavlink_proto.magic", "Magic value / version", base.HEX)
+f.length = ProtoField.uint8("mavlink_proto.length", "Payload length")
+f.sequence = ProtoField.uint8("mavlink_proto.sequence", "Packet sequence")
+f.sysid = ProtoField.uint8("mavlink_proto.sysid", "System id", base.HEX)
+f.compid = ProtoField.uint8("mavlink_proto.compid", "Component id", base.HEX)
+f.msgid = ProtoField.uint8("mavlink_proto.msgid", "Message id", base.HEX)
+f.crc = ProtoField.uint16("mavlink_proto.crc", "Message CRC", base.HEX)
+f.payload = ProtoField.uint8("mavlink_proto.crc", "Payload", base.DEC, messageName)
+f.rawheader = ProtoField.bytes("mavlink_proto.rawheader", "Unparsable header fragment")
+f.rawpayload = ProtoField.bytes("mavlink_proto.rawpayload", "Unparsable payload")
+
+""")
+
+
+def generate_msg_table(outf, msgs):
+ t.write(outf, """
+messageName = {
+""")
+ for msg in msgs:
+ assert isinstance(msg, mavparse.MAVType)
+ t.write(outf, """
+ [${msgid}] = '${msgname}',
+""", {'msgid':msg.id, 'msgname':msg.name})
+
+ t.write(outf, """
+}
+
+""")
+
+
+def generate_msg_fields(outf, msg):
+ assert isinstance(msg, mavparse.MAVType)
+ for f in msg.fields:
+ assert isinstance(f, mavparse.MAVField)
+ mtype = f.type
+ ltype = lua_type(mtype)
+ count = f.array_length if f.array_length>0 else 1
+
+ # string is no array, but string of chars
+ if mtype == 'char' and count > 1:
+ count = 1
+ ltype = 'string'
+
+ for i in range(0,count):
+ if count>1:
+ array_text = '[' + str(i) + ']'
+ index_text = '_' + str(i)
+ else:
+ array_text = ''
+ index_text = ''
+
+ t.write(outf,
+"""
+f.${fmsg}_${fname}${findex} = ProtoField.${ftype}("mavlink_proto.${fmsg}_${fname}${findex}", "${fname}${farray} (${ftype})")
+""", {'fmsg':msg.name, 'ftype':ltype, 'fname':f.name, 'findex':index_text, 'farray':array_text})
+
+ t.write(outf, '\n\n')
+
+def generate_field_dissector(outf, msg, field):
+ assert isinstance(field, mavparse.MAVField)
+
+ mtype = field.type
+ size = type_size(mtype)
+ ltype = lua_type(mtype)
+ count = field.array_length if field.array_length>0 else 1
+
+ # string is no array but string of chars
+ if mtype == 'char':
+ size = count
+ count = 1
+
+ # handle arrays, but not strings
+
+ for i in range(0,count):
+ if count>1:
+ index_text = '_' + str(i)
+ else:
+ index_text = ''
+ t.write(outf,
+"""
+ tree:add_le(f.${fmsg}_${fname}${findex}, buffer(offset, ${fbytes}))
+ offset = offset + ${fbytes}
+
+""", {'fname':field.name, 'ftype':mtype, 'fmsg': msg.name, 'fbytes':size, 'findex':index_text})
+
+
+def generate_payload_dissector(outf, msg):
+ assert isinstance(msg, mavparse.MAVType)
+ t.write(outf,
+"""
+-- dissect payload of message type ${msgname}
+function payload_fns.payload_${msgid}(buffer, tree, msgid, offset)
+""", {'msgid':msg.id, 'msgname':msg.name})
+
+ for f in msg.ordered_fields:
+ generate_field_dissector(outf, msg, f)
+
+
+ t.write(outf,
+"""
+ return offset
+end
+
+
+""")
+
+
+def generate_packet_dis(outf):
+ t.write(outf,
+"""
+-- dissector function
+function mavlink_proto.dissector(buffer,pinfo,tree)
+ local offset = 0
+
+ local subtree = tree:add (mavlink_proto, buffer(), "MAVLink Protocol ("..buffer:len()..")")
+
+ -- decode protocol version first
+ local version = buffer(offset,1):uint()
+ local protocolString = ""
+
+ if (version == 0xfe) then
+ protocolString = "MAVLink 1.0"
+ elseif (version == 0x55) then
+ protocolString = "MAVLink 0.9"
+ else
+ protocolString = "unknown"
+ end
+
+ -- some Wireshark decoration
+ pinfo.cols.protocol = protocolString
+
+ -- HEADER ----------------------------------------
+
+ local msgid
+ if (buffer:len() - 2 - offset > 6) then
+ -- normal header
+ local header = subtree:add("Header")
+ header:add(f.magic,version)
+ offset = offset + 1
+
+ local length = buffer(offset,1)
+ header:add(f.length, length)
+ offset = offset + 1
+
+ local sequence = buffer(offset,1)
+ header:add(f.sequence, sequence)
+ offset = offset + 1
+
+ local sysid = buffer(offset,1)
+ header:add(f.sysid, sysid)
+ offset = offset + 1
+
+ local compid = buffer(offset,1)
+ header:add(f.compid, compid)
+ offset = offset + 1
+
+ pinfo.cols.src = "System: "..tostring(sysid:uint())..', Component: '..tostring(compid:uint())
+
+ msgid = buffer(offset,1)
+ header:add(f.msgid, msgid)
+ offset = offset + 1
+ else
+ -- handle truncated header
+ local hsize = buffer:len() - 2 - offset
+ subtree:add(f.rawheader, buffer(offset, hsize))
+ offset = offset + hsize
+ end
+
+
+ -- BODY ----------------------------------------
+
+ -- dynamically call the type-specific payload dissector
+ local msgnr = msgid:uint()
+ local dissect_payload_fn = "payload_"..tostring(msgnr)
+ local fn = payload_fns[dissect_payload_fn]
+
+ if (fn == nil) then
+ pinfo.cols.info:append ("Unkown message type ")
+ subtree:add_expert_info(PI_MALFORMED, PI_ERROR, "Unkown message type")
+ size = buffer:len() - 2 - offset
+ subtree:add(f.rawpayload, buffer(offset,size))
+ offset = offset + size
+ else
+ local payload = subtree:add(f.payload, msgid)
+ pinfo.cols.dst:set(messageName[msgid:uint()])
+ pinfo.cols.info = messageName[msgid:uint()]
+ offset = fn(buffer, payload, msgid, offset)
+ end
+
+ -- CRC ----------------------------------------
+ local crc = buffer(offset,2)
+ subtree:add_le(f.crc, crc)
+ offset = offset + 2
+
+end
+
+
+""")
+
+
+
+def generate_epilog(outf):
+ print("Generating epilog")
+ t.write(outf,
+"""
+-- bind protocol dissector to USER0 linktype
+
+wtap_encap = DissectorTable.get("wtap_encap")
+wtap_encap:add(wtap.USER0, mavlink_proto)
+
+-- bind protocol dissector to port 14550
+
+local udp_dissector_table = DissectorTable.get("udp.port")
+udp_dissector_table:add(14550, mavlink_proto)
+""")
+
+def generate(basename, xml):
+ '''generate complete python implemenation'''
+ if basename.endswith('.lua'):
+ filename = basename
+ else:
+ filename = basename + '.lua'
+
+ msgs = []
+ enums = []
+ filelist = []
+ for x in xml:
+ msgs.extend(x.message)
+ enums.extend(x.enum)
+ filelist.append(os.path.basename(x.filename))
+
+ for m in msgs:
+ if xml[0].little_endian:
+ m.fmtstr = '<'
+ else:
+ m.fmtstr = '>'
+ for f in m.ordered_fields:
+ m.fmtstr += mavfmt(f)
+ m.order_map = [ 0 ] * len(m.fieldnames)
+ for i in range(0, len(m.fieldnames)):
+ m.order_map[i] = m.ordered_fieldnames.index(m.fieldnames[i])
+
+ print("Generating %s" % filename)
+ outf = open(filename, "w")
+ generate_preamble(outf)
+ generate_msg_table(outf, msgs)
+ generate_body_fields(outf)
+
+ for m in msgs:
+ generate_msg_fields(outf, m)
+
+ for m in msgs:
+ generate_payload_dissector(outf, m)
+
+ generate_packet_dis(outf)
+# generate_enums(outf, enums)
+# generate_message_ids(outf, msgs)
+# generate_classes(outf, msgs)
+# generate_mavlink_class(outf, msgs, xml[0])
+# generate_methods(outf, msgs)
+ generate_epilog(outf)
+ outf.close()
+ print("Generated %s OK" % filename)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavparse.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavparse.py
new file mode 100644
index 000000000..e491853c2
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavparse.py
@@ -0,0 +1,491 @@
+#!/usr/bin/env python
+'''
+mavlink python parse functions
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import xml.parsers.expat, os, errno, time, sys, operator, struct
+
+PROTOCOL_0_9 = "0.9"
+PROTOCOL_1_0 = "1.0"
+PROTOCOL_2_0 = "2.0"
+
+# message flags
+FLAG_HAVE_TARGET_SYSTEM = 1
+FLAG_HAVE_TARGET_COMPONENT = 2
+
+class MAVParseError(Exception):
+ def __init__(self, message, inner_exception=None):
+ self.message = message
+ self.inner_exception = inner_exception
+ self.exception_info = sys.exc_info()
+ def __str__(self):
+ return self.message
+
+class MAVField(object):
+ def __init__(self, name, type, print_format, xml, description='', enum=''):
+ self.name = name
+ self.name_upper = name.upper()
+ self.description = description
+ self.array_length = 0
+ self.enum = enum
+ self.omit_arg = False
+ self.const_value = None
+ self.print_format = print_format
+ lengths = {
+ 'float' : 4,
+ 'double' : 8,
+ 'char' : 1,
+ 'int8_t' : 1,
+ 'uint8_t' : 1,
+ 'uint8_t_mavlink_version' : 1,
+ 'int16_t' : 2,
+ 'uint16_t' : 2,
+ 'int32_t' : 4,
+ 'uint32_t' : 4,
+ 'int64_t' : 8,
+ 'uint64_t' : 8,
+ }
+
+ if type=='uint8_t_mavlink_version':
+ type = 'uint8_t'
+ self.omit_arg = True
+ self.const_value = xml.version
+
+ aidx = type.find("[")
+ if aidx != -1:
+ assert type[-1:] == ']'
+ self.array_length = int(type[aidx+1:-1])
+ type = type[0:aidx]
+ if type == 'array':
+ type = 'int8_t'
+ if type in lengths:
+ self.type_length = lengths[type]
+ self.type = type
+ elif (type+"_t") in lengths:
+ self.type_length = lengths[type+"_t"]
+ self.type = type+'_t'
+ else:
+ raise MAVParseError("unknown type '%s'" % type)
+ if self.array_length != 0:
+ self.wire_length = self.array_length * self.type_length
+ else:
+ self.wire_length = self.type_length
+ self.type_upper = self.type.upper()
+
+ def gen_test_value(self, i):
+ '''generate a testsuite value for a MAVField'''
+ if self.const_value:
+ return self.const_value
+ elif self.type == 'float':
+ return 17.0 + self.wire_offset*7 + i
+ elif self.type == 'double':
+ return 123.0 + self.wire_offset*7 + i
+ elif self.type == 'char':
+ return chr(ord('A') + (self.wire_offset + i)%26)
+ elif self.type in [ 'int8_t', 'uint8_t' ]:
+ return (5 + self.wire_offset*67 + i) & 0xFF
+ elif self.type in ['int16_t', 'uint16_t']:
+ return (17235 + self.wire_offset*52 + i) & 0xFFFF
+ elif self.type in ['int32_t', 'uint32_t']:
+ return (963497464 + self.wire_offset*52 + i)&0xFFFFFFFF
+ elif self.type in ['int64_t', 'uint64_t']:
+ return 93372036854775807 + self.wire_offset*63 + i
+ else:
+ raise MAVError('unknown type %s' % self.type)
+
+ def set_test_value(self):
+ '''set a testsuite value for a MAVField'''
+ if self.array_length:
+ self.test_value = []
+ for i in range(self.array_length):
+ self.test_value.append(self.gen_test_value(i))
+ else:
+ self.test_value = self.gen_test_value(0)
+ if self.type == 'char' and self.array_length:
+ v = ""
+ for c in self.test_value:
+ v += c
+ self.test_value = v[:-1]
+
+
+class MAVType(object):
+ def __init__(self, name, id, linenumber, description=''):
+ self.name = name
+ self.name_lower = name.lower()
+ self.linenumber = linenumber
+ self.id = int(id)
+ self.description = description
+ self.fields = []
+ self.fieldnames = []
+ self.extensions_start = None
+
+ def base_fields(self):
+ '''return number of non-extended fields'''
+ if self.extensions_start is None:
+ return len(self.fields)
+ return len(self.fields[:self.extensions_start])
+
+class MAVEnumParam(object):
+ def __init__(self, index, description=''):
+ self.index = index
+ self.description = description
+
+class MAVEnumEntry(object):
+ def __init__(self, name, value, description='', end_marker=False, autovalue=False, origin_file='', origin_line=0):
+ self.name = name
+ self.value = value
+ self.description = description
+ self.param = []
+ self.end_marker = end_marker
+ self.autovalue = autovalue # True if value was *not* specified in XML
+ self.origin_file = origin_file
+ self.origin_line = origin_line
+
+class MAVEnum(object):
+ def __init__(self, name, linenumber, description=''):
+ self.name = name
+ self.description = description
+ self.entry = []
+ self.start_value = None
+ self.highest_value = 0
+ self.linenumber = linenumber
+
+class MAVXML(object):
+ '''parse a mavlink XML file'''
+ def __init__(self, filename, wire_protocol_version=PROTOCOL_0_9):
+ self.filename = filename
+ self.basename = os.path.basename(filename)
+ if self.basename.lower().endswith(".xml"):
+ self.basename = self.basename[:-4]
+ self.basename_upper = self.basename.upper()
+ self.message = []
+ self.enum = []
+ # we use only the day for the parse_time, as otherwise
+ # it causes a lot of unnecessary cache misses with ccache
+ self.parse_time = time.strftime("%a %b %d %Y")
+ self.version = 2
+ self.include = []
+ self.wire_protocol_version = wire_protocol_version
+
+ # setup the protocol features for the requested protocol version
+ if wire_protocol_version == PROTOCOL_0_9:
+ self.protocol_marker = ord('U')
+ self.sort_fields = False
+ self.little_endian = False
+ self.crc_extra = False
+ self.crc_struct = False
+ self.command_24bit = False
+ self.allow_extensions = False
+ elif wire_protocol_version == PROTOCOL_1_0:
+ self.protocol_marker = 0xFE
+ self.sort_fields = True
+ self.little_endian = True
+ self.crc_extra = True
+ self.crc_struct = False
+ self.command_24bit = False
+ self.allow_extensions = False
+ elif wire_protocol_version == PROTOCOL_2_0:
+ self.protocol_marker = 0xFD
+ self.sort_fields = True
+ self.little_endian = True
+ self.crc_extra = True
+ self.crc_struct = True
+ self.command_24bit = True
+ self.allow_extensions = True
+ else:
+ print("Unknown wire protocol version")
+ print("Available versions are: %s %s" % (PROTOCOL_0_9, PROTOCOL_1_0, PROTOCOL_2_0))
+ raise MAVParseError('Unknown MAVLink wire protocol version %s' % wire_protocol_version)
+
+ in_element_list = []
+
+ def check_attrs(attrs, check, where):
+ for c in check:
+ if not c in attrs:
+ raise MAVParseError('expected missing %s "%s" attribute at %s:%u' % (
+ where, c, filename, p.CurrentLineNumber))
+
+ def start_element(name, attrs):
+ in_element_list.append(name)
+ in_element = '.'.join(in_element_list)
+ #print in_element
+ if in_element == "mavlink.messages.message":
+ check_attrs(attrs, ['name', 'id'], 'message')
+ self.message.append(MAVType(attrs['name'], attrs['id'], p.CurrentLineNumber))
+ elif in_element == "mavlink.messages.message.extensions":
+ self.message[-1].extensions_start = len(self.message[-1].fields)
+ elif in_element == "mavlink.messages.message.field":
+ check_attrs(attrs, ['name', 'type'], 'field')
+ if 'print_format' in attrs:
+ print_format = attrs['print_format']
+ else:
+ print_format = None
+ if 'enum' in attrs:
+ enum = attrs['enum']
+ else:
+ enum = ''
+ new_field = MAVField(attrs['name'], attrs['type'], print_format, self, enum=enum)
+ if self.message[-1].extensions_start is None or self.allow_extensions:
+ self.message[-1].fields.append(new_field)
+ elif in_element == "mavlink.enums.enum":
+ check_attrs(attrs, ['name'], 'enum')
+ self.enum.append(MAVEnum(attrs['name'], p.CurrentLineNumber))
+ elif in_element == "mavlink.enums.enum.entry":
+ check_attrs(attrs, ['name'], 'enum entry')
+ # determine value and if it was automatically assigned (for possible merging later)
+ if 'value' in attrs:
+ value = eval(attrs['value'])
+ autovalue = False
+ else:
+ value = self.enum[-1].highest_value + 1
+ autovalue = True
+ # check lowest value
+ if (self.enum[-1].start_value == None or value < self.enum[-1].start_value):
+ self.enum[-1].start_value = value
+ # check highest value
+ if (value > self.enum[-1].highest_value):
+ self.enum[-1].highest_value = value
+ # append the new entry
+ self.enum[-1].entry.append(MAVEnumEntry(attrs['name'], value, '', False, autovalue, self.filename, p.CurrentLineNumber))
+ elif in_element == "mavlink.enums.enum.entry.param":
+ check_attrs(attrs, ['index'], 'enum param')
+ self.enum[-1].entry[-1].param.append(MAVEnumParam(attrs['index']))
+
+ def end_element(name):
+ in_element_list.pop()
+
+ def char_data(data):
+ in_element = '.'.join(in_element_list)
+ if in_element == "mavlink.messages.message.description":
+ self.message[-1].description += data
+ elif in_element == "mavlink.messages.message.field":
+ if self.message[-1].extensions_start is None or self.allow_extensions:
+ self.message[-1].fields[-1].description += data
+ elif in_element == "mavlink.enums.enum.description":
+ self.enum[-1].description += data
+ elif in_element == "mavlink.enums.enum.entry.description":
+ self.enum[-1].entry[-1].description += data
+ elif in_element == "mavlink.enums.enum.entry.param":
+ self.enum[-1].entry[-1].param[-1].description += data
+ elif in_element == "mavlink.version":
+ self.version = int(data)
+ elif in_element == "mavlink.include":
+ self.include.append(data)
+
+ f = open(filename, mode='rb')
+ p = xml.parsers.expat.ParserCreate()
+ p.StartElementHandler = start_element
+ p.EndElementHandler = end_element
+ p.CharacterDataHandler = char_data
+ p.ParseFile(f)
+ f.close()
+
+ self.message_lengths = {}
+ self.message_min_lengths = {}
+ self.message_flags = {}
+ self.message_target_system_ofs = {}
+ self.message_target_component_ofs = {}
+ self.message_crcs = {}
+ self.message_names = {}
+ self.largest_payload = 0
+
+ if not self.command_24bit:
+ # remove messages with IDs > 255
+ m2 = []
+ for m in self.message:
+ if m.id <= 255:
+ m2.append(m)
+ else:
+ print("Ignoring MAVLink2 message %s" % m.name)
+ self.message = m2
+
+ for m in self.message:
+ if not self.command_24bit and m.id > 255:
+ continue
+
+ m.wire_length = 0
+ m.wire_min_length = 0
+ m.fieldnames = []
+ m.fieldlengths = []
+ m.ordered_fieldnames = []
+ m.message_flags = 0
+ m.target_system_ofs = 0
+ m.target_component_ofs = 0
+
+ if self.sort_fields:
+ # when we have extensions we only sort up to the first extended field
+ sort_end = m.base_fields()
+ m.ordered_fields = sorted(m.fields[:sort_end],
+ key=operator.attrgetter('type_length'),
+ reverse=True)
+ m.ordered_fields.extend(m.fields[sort_end:])
+ else:
+ m.ordered_fields = m.fields
+ for f in m.fields:
+ m.fieldnames.append(f.name)
+ L = f.array_length
+ if L == 0:
+ m.fieldlengths.append(1)
+ elif L > 1 and f.type == 'char':
+ m.fieldlengths.append(1)
+ else:
+ m.fieldlengths.append(L)
+ for i in range(len(m.ordered_fields)):
+ f = m.ordered_fields[i]
+ f.wire_offset = m.wire_length
+ m.wire_length += f.wire_length
+ if m.extensions_start is None or i < m.extensions_start:
+ m.wire_min_length = m.wire_length
+ m.ordered_fieldnames.append(f.name)
+ f.set_test_value()
+ if f.name.find('[') != -1:
+ raise MAVParseError("invalid field name with array descriptor %s" % f.name)
+ # having flags for target_system and target_component helps a lot for routing code
+ if f.name == 'target_system':
+ m.message_flags |= FLAG_HAVE_TARGET_SYSTEM
+ m.target_system_ofs = f.wire_offset
+ elif f.name == 'target_component':
+ m.message_flags |= FLAG_HAVE_TARGET_COMPONENT
+ m.target_component_ofs = f.wire_offset
+ m.num_fields = len(m.fieldnames)
+ if m.num_fields > 64:
+ raise MAVParseError("num_fields=%u : Maximum number of field names allowed is" % (
+ m.num_fields, 64))
+ m.crc_extra = message_checksum(m)
+
+ key = m.id
+ self.message_crcs[key] = m.crc_extra
+ self.message_lengths[key] = m.wire_length
+ self.message_min_lengths[key] = m.wire_min_length
+ self.message_names[key] = m.name
+ self.message_flags[key] = m.message_flags
+ self.message_target_system_ofs[key] = m.target_system_ofs
+ self.message_target_component_ofs[key] = m.target_component_ofs
+
+ if m.wire_length > self.largest_payload:
+ self.largest_payload = m.wire_length
+
+ if m.wire_length+8 > 64:
+ print("Note: message %s is longer than 64 bytes long (%u bytes), which can cause fragmentation since many radio modems use 64 bytes as maximum air transfer unit." % (m.name, m.wire_length+8))
+
+ def __str__(self):
+ return "MAVXML for %s from %s (%u message, %u enums)" % (
+ self.basename, self.filename, len(self.message), len(self.enum))
+
+
+def message_checksum(msg):
+ '''calculate a 8-bit checksum of the key fields of a message, so we
+ can detect incompatible XML changes'''
+ from .mavcrc import x25crc
+ crc = x25crc()
+ crc.accumulate_str(msg.name + ' ')
+ # in order to allow for extensions the crc does not include
+ # any field extensions
+ crc_end = msg.base_fields()
+ for i in range(crc_end):
+ f = msg.ordered_fields[i]
+ crc.accumulate_str(f.type + ' ')
+ crc.accumulate_str(f.name + ' ')
+ if f.array_length:
+ crc.accumulate([f.array_length])
+ return (crc.crc&0xFF) ^ (crc.crc>>8)
+
+def merge_enums(xml):
+ '''merge enums between XML files'''
+ emap = {}
+ for x in xml:
+ newenums = []
+ for enum in x.enum:
+ if enum.name in emap:
+ emapitem = emap[enum.name]
+ # check for possible conflicting auto-assigned values after merge
+ if (emapitem.start_value <= enum.highest_value and emapitem.highest_value >= enum.start_value):
+ for entry in emapitem.entry:
+ # correct the value if necessary, but only if it was auto-assigned to begin with
+ if entry.value <= enum.highest_value and entry.autovalue == True:
+ entry.value = enum.highest_value + 1
+ enum.highest_value = entry.value
+ # merge the entries
+ emapitem.entry.extend(enum.entry)
+ if not emapitem.description:
+ emapitem.description = enum.description
+ print("Merged enum %s" % enum.name)
+ else:
+ newenums.append(enum)
+ emap[enum.name] = enum
+ x.enum = newenums
+ for e in emap:
+ # sort by value
+ emap[e].entry = sorted(emap[e].entry,
+ key=operator.attrgetter('value'),
+ reverse=False)
+ # add a ENUM_END
+ emap[e].entry.append(MAVEnumEntry("%s_ENUM_END" % emap[e].name,
+ emap[e].entry[-1].value+1, end_marker=True))
+
+def check_duplicates(xml):
+ '''check for duplicate message IDs'''
+
+ merge_enums(xml)
+
+ msgmap = {}
+ enummap = {}
+ for x in xml:
+ for m in x.message:
+ key = m.id
+ if key in msgmap:
+ print("ERROR: Duplicate message id %u for %s (%s:%u) also used by %s" % (
+ m.id,
+ m.name,
+ x.filename, m.linenumber,
+ msgmap[key]))
+ return True
+ fieldset = set()
+ for f in m.fields:
+ if f.name in fieldset:
+ print("ERROR: Duplicate field %s in message %s (%s:%u)" % (
+ f.name, m.name,
+ x.filename, m.linenumber))
+ return True
+ fieldset.add(f.name)
+ msgmap[key] = '%s (%s:%u)' % (m.name, x.filename, m.linenumber)
+ for enum in x.enum:
+ for entry in enum.entry:
+ if entry.autovalue == True and "common.xml" not in entry.origin_file:
+ print("Note: An enum value was auto-generated: %s = %u" % (entry.name, entry.value))
+ s1 = "%s.%s" % (enum.name, entry.name)
+ s2 = "%s.%s" % (enum.name, entry.value)
+ if s1 in enummap or s2 in enummap:
+ print("ERROR: Duplicate enum %s:\n\t%s = %s @ %s:%u\n\t%s" % (
+ "names" if s1 in enummap else "values",
+ s1, entry.value, entry.origin_file, entry.origin_line,
+ enummap.get(s1) or enummap.get(s2)))
+ return True
+ enummap[s1] = enummap[s2] = "%s.%s = %s @ %s:%u" % (enum.name, entry.name, entry.value, entry.origin_file, entry.origin_line)
+
+ return False
+
+
+
+def total_msgs(xml):
+ '''count total number of msgs'''
+ count = 0
+ for x in xml:
+ count += len(x.message)
+ return count
+
+def mkdir_p(dir):
+ try:
+ os.makedirs(dir)
+ except OSError as exc:
+ if exc.errno == errno.EEXIST:
+ pass
+ else: raise
+
+# check version consistent
+# add test.xml
+# finish test suite
+# printf style error macro, if defined call errors
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavschema.xsd b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavschema.xsd
new file mode 100644
index 000000000..eb028b3f0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavschema.xsd
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtemplate.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtemplate.py
new file mode 100644
index 000000000..ede41260b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtemplate.py
@@ -0,0 +1,131 @@
+#!/usr/bin/env python
+'''
+simple templating system for mavlink generator
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+from .mavparse import MAVParseError
+
+class MAVTemplate(object):
+ '''simple templating system'''
+ def __init__(self,
+ start_var_token="${",
+ end_var_token="}",
+ start_rep_token="${{",
+ end_rep_token="}}",
+ trim_leading_lf=True,
+ checkmissing=True):
+ self.start_var_token = start_var_token
+ self.end_var_token = end_var_token
+ self.start_rep_token = start_rep_token
+ self.end_rep_token = end_rep_token
+ self.trim_leading_lf = trim_leading_lf
+ self.checkmissing = checkmissing
+
+ def find_end(self, text, start_token, end_token, ignore_end_token=None):
+ '''find the of a token.
+ Returns the offset in the string immediately after the matching end_token'''
+ if not text.startswith(start_token):
+ raise MAVParseError("invalid token start")
+ offset = len(start_token)
+ nesting = 1
+ while nesting > 0:
+ idx1 = text[offset:].find(start_token)
+ idx2 = text[offset:].find(end_token)
+ # Check for false positives due to another similar token
+ # For example, make sure idx2 points to the second '}' in ${{field: ${name}}}
+ if ignore_end_token:
+ combined_token = ignore_end_token + end_token
+ if text[offset+idx2:offset+idx2+len(combined_token)] == combined_token:
+ idx2 += len(ignore_end_token)
+ if idx1 == -1 and idx2 == -1:
+ raise MAVParseError("token nesting error")
+ if idx1 == -1 or idx1 > idx2:
+ offset += idx2 + len(end_token)
+ nesting -= 1
+ else:
+ offset += idx1 + len(start_token)
+ nesting += 1
+ return offset
+
+ def find_var_end(self, text):
+ '''find the of a variable'''
+ return self.find_end(text, self.start_var_token, self.end_var_token)
+
+ def find_rep_end(self, text):
+ '''find the of a repitition'''
+ return self.find_end(text, self.start_rep_token, self.end_rep_token, ignore_end_token=self.end_var_token)
+
+ def substitute(self, text, subvars={},
+ trim_leading_lf=None, checkmissing=None):
+ '''substitute variables in a string'''
+
+ if trim_leading_lf is None:
+ trim_leading_lf = self.trim_leading_lf
+ if checkmissing is None:
+ checkmissing = self.checkmissing
+
+ # handle repititions
+ while True:
+ subidx = text.find(self.start_rep_token)
+ if subidx == -1:
+ break
+ endidx = self.find_rep_end(text[subidx:])
+ if endidx == -1:
+ raise MAVParseError("missing end macro in %s" % text[subidx:])
+ part1 = text[0:subidx]
+ part2 = text[subidx+len(self.start_rep_token):subidx+(endidx-len(self.end_rep_token))]
+ part3 = text[subidx+endidx:]
+ a = part2.split(':')
+ field_name = a[0]
+ rest = ':'.join(a[1:])
+ v = None
+ if isinstance(subvars, dict):
+ v = subvars.get(field_name, None)
+ else:
+ v = getattr(subvars, field_name, None)
+ if v is None:
+ raise MAVParseError('unable to find field %s' % field_name)
+ t1 = part1
+ for f in v:
+ t1 += self.substitute(rest, f, trim_leading_lf=False, checkmissing=False)
+ if len(v) != 0 and t1[-1] in ["\n", ","]:
+ t1 = t1[:-1]
+ t1 += part3
+ text = t1
+
+ if trim_leading_lf:
+ if text[0] == '\n':
+ text = text[1:]
+ while True:
+ idx = text.find(self.start_var_token)
+ if idx == -1:
+ return text
+ endidx = text[idx:].find(self.end_var_token)
+ if endidx == -1:
+ raise MAVParseError('missing end of variable: %s' % text[idx:idx+10])
+ varname = text[idx+2:idx+endidx]
+ if isinstance(subvars, dict):
+ if not varname in subvars:
+ if checkmissing:
+ raise MAVParseError("unknown variable in '%s%s%s'" % (
+ self.start_var_token, varname, self.end_var_token))
+ return text[0:idx+endidx] + self.substitute(text[idx+endidx:], subvars,
+ trim_leading_lf=False, checkmissing=False)
+ value = subvars[varname]
+ else:
+ value = getattr(subvars, varname, None)
+ if value is None:
+ if checkmissing:
+ raise MAVParseError("unknown variable in '%s%s%s'" % (
+ self.start_var_token, varname, self.end_var_token))
+ return text[0:idx+endidx] + self.substitute(text[idx+endidx:], subvars,
+ trim_leading_lf=False, checkmissing=False)
+ text = text.replace("%s%s%s" % (self.start_var_token, varname, self.end_var_token), str(value))
+ return text
+
+ def write(self, file, text, subvars={}, trim_leading_lf=True):
+ '''write to a file with variable substitution'''
+ file.write(self.substitute(text, subvars=subvars, trim_leading_lf=trim_leading_lf))
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtestgen.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtestgen.py
new file mode 100755
index 000000000..b4311800e
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/generator/mavtestgen.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+'''
+generate a MAVLink test suite
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import sys, textwrap
+from argparse import ArgumentParser
+
+# mavparse is up a directory level
+from . import mavparse
+
+def gen_value(f, i, language):
+ '''generate a test value for the ith field of a message'''
+ type = f.type
+
+ # could be an array
+ if type.find("[") != -1:
+ aidx = type.find("[")
+ basetype = type[0:aidx]
+ if basetype == "array":
+ basetype = "int8_t"
+ if language == 'C':
+ return '(const %s *)"%s%u"' % (basetype, f.name, i)
+ return '"%s%u"' % (f.name, i)
+
+ if type == 'float':
+ return 17.0 + i*7
+ if type == 'char':
+ return 'A' + i
+ if type == 'int8_t':
+ return 5 + i
+ if type in ['int8_t', 'uint8_t']:
+ return 5 + i
+ if type in ['uint8_t_mavlink_version']:
+ return 2
+ if type in ['int16_t', 'uint16_t']:
+ return 17235 + i*52
+ if type in ['int32_t', 'uint32_t']:
+ v = 963497464 + i*52
+ if language == 'C':
+ return "%sL" % v
+ return v
+ if type in ['int64_t', 'uint64_t']:
+ v = 9223372036854775807 + i*63
+ if language == 'C':
+ return "%sLL" % v
+ return v
+
+
+
+def generate_methods_python(outf, msgs):
+ outf.write("""
+'''
+MAVLink protocol test implementation (auto-generated by mavtestgen.py)
+
+Generated from: %s
+
+Note: this file has been auto-generated. DO NOT EDIT
+'''
+
+import mavlink
+
+def generate_outputs(mav):
+ '''generate all message types as outputs'''
+""")
+ for m in msgs:
+ if m.name == "HEARTBEAT": continue
+ outf.write("\tmav.%s_send(" % m.name.lower())
+ for i in range(0, len(m.fields)):
+ f = m.fields[i]
+ outf.write("%s=%s" % (f.name, gen_value(f, i, 'py')))
+ if i != len(m.fields)-1:
+ outf.write(",")
+ outf.write(")\n")
+
+
+def generate_methods_C(outf, msgs):
+ outf.write("""
+/*
+MAVLink protocol test implementation (auto-generated by mavtestgen.py)
+
+Generated from: %s
+
+Note: this file has been auto-generated. DO NOT EDIT
+*/
+
+static void mavtest_generate_outputs(mavlink_channel_t chan)
+{
+""")
+ for m in msgs:
+ if m.name == "HEARTBEAT": continue
+ outf.write("\tmavlink_msg_%s_send(chan," % m.name.lower())
+ for i in range(0, len(m.fields)):
+ f = m.fields[i]
+ outf.write("%s" % gen_value(f, i, 'C'))
+ if i != len(m.fields)-1:
+ outf.write(",")
+ outf.write(");\n")
+ outf.write("}\n")
+
+
+
+######################################################################
+'''main program'''
+
+parser = ArgumentParser(description="This tool generate MAVLink test suite")
+parser.add_argument("-o", "--output", default="mavtest", help="output folder [default: %(default)s]")
+parser.add_argument("definitions", metavar="XML", nargs="+", help="MAVLink definitions")
+args = parser.parse_args()
+
+msgs = []
+enums = []
+
+for fname in args.definitions:
+ (m, e) = mavparse.parse_mavlink_xml(fname)
+ msgs.extend(m)
+ enums.extend(e)
+
+
+if mavparse.check_duplicates(msgs):
+ sys.exit(1)
+
+print("Found %u MAVLink message types" % len(msgs))
+
+print("Generating python %s" % (args.output+'.py'))
+outf = open(args.output + '.py', "w")
+generate_methods_python(outf, msgs)
+outf.close()
+
+print("Generating C %s" % (args.output+'.h'))
+outf = open(args.output + '.h', "w")
+generate_methods_C(outf, msgs)
+outf.close()
+
+print("Generated %s OK" % args.output)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavexpression.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavexpression.py
new file mode 100644
index 000000000..20f1169b6
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavexpression.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+'''
+mavlink expression evaluation functions
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import os
+
+# these imports allow for mavgraph and mavlogdump to use maths expressions more easily
+from math import *
+from .mavextra import *
+
+'''
+Support having a $HOME/.pymavlink/mavextra.py for extra graphing functions
+'''
+home = os.getenv('HOME')
+if home is not None:
+ extra = os.path.join(home, '.pymavlink', 'mavextra.py')
+ if os.path.exists(extra):
+ import imp
+ mavuser = imp.load_source('pymavlink.mavuser', extra)
+ from pymavlink.mavuser import *
+
+def evaluate_expression(expression, vars):
+ '''evaluation an expression'''
+ try:
+ v = eval(expression, globals(), vars)
+ except NameError:
+ return None
+ except ZeroDivisionError:
+ return None
+ return v
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavextra.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavextra.py
new file mode 100644
index 000000000..8ea3d49a0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavextra.py
@@ -0,0 +1,1008 @@
+#!/usr/bin/env python
+'''
+useful extra functions for use by mavlink clients
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import os, sys
+from math import *
+
+try:
+ # in case numpy isn't installed
+ from .quaternion import Quaternion
+except:
+ pass
+
+try:
+ # rotmat doesn't work on Python3.2 yet
+ from .rotmat import Vector3, Matrix3
+except Exception:
+ pass
+
+
+def kmh(mps):
+ '''convert m/s to Km/h'''
+ return mps*3.6
+
+def altitude(SCALED_PRESSURE, ground_pressure=None, ground_temp=None):
+ '''calculate barometric altitude'''
+ from . import mavutil
+ self = mavutil.mavfile_global
+ if ground_pressure is None:
+ if self.param('GND_ABS_PRESS', None) is None:
+ return 0
+ ground_pressure = self.param('GND_ABS_PRESS', 1)
+ if ground_temp is None:
+ ground_temp = self.param('GND_TEMP', 0)
+ scaling = ground_pressure / (SCALED_PRESSURE.press_abs*100.0)
+ temp = ground_temp + 273.15
+ return log(scaling) * temp * 29271.267 * 0.001
+
+def altitude2(SCALED_PRESSURE, ground_pressure=None, ground_temp=None):
+ '''calculate barometric altitude'''
+ from . import mavutil
+ self = mavutil.mavfile_global
+ if ground_pressure is None:
+ if self.param('GND_ABS_PRESS', None) is None:
+ return 0
+ ground_pressure = self.param('GND_ABS_PRESS', 1)
+ if ground_temp is None:
+ ground_temp = self.param('GND_TEMP', 0)
+ scaling = SCALED_PRESSURE.press_abs*100.0 / ground_pressure
+ temp = ground_temp + 273.15
+ return 153.8462 * temp * (1.0 - exp(0.190259 * log(scaling)))
+
+def mag_heading(RAW_IMU, ATTITUDE, declination=None, SENSOR_OFFSETS=None, ofs=None):
+ '''calculate heading from raw magnetometer'''
+ if declination is None:
+ import mavutil
+ declination = degrees(mavutil.mavfile_global.param('COMPASS_DEC', 0))
+ mag_x = RAW_IMU.xmag
+ mag_y = RAW_IMU.ymag
+ mag_z = RAW_IMU.zmag
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ mag_x += ofs[0] - SENSOR_OFFSETS.mag_ofs_x
+ mag_y += ofs[1] - SENSOR_OFFSETS.mag_ofs_y
+ mag_z += ofs[2] - SENSOR_OFFSETS.mag_ofs_z
+
+ # go via a DCM matrix to match the APM calculation
+ dcm_matrix = rotation(ATTITUDE)
+ cos_pitch_sq = 1.0-(dcm_matrix.c.x*dcm_matrix.c.x)
+ headY = mag_y * dcm_matrix.c.z - mag_z * dcm_matrix.c.y
+ headX = mag_x * cos_pitch_sq - dcm_matrix.c.x * (mag_y * dcm_matrix.c.y + mag_z * dcm_matrix.c.z)
+
+ heading = degrees(atan2(-headY,headX)) + declination
+ if heading < 0:
+ heading += 360
+ return heading
+
+def mag_heading_motors(RAW_IMU, ATTITUDE, declination, SENSOR_OFFSETS, ofs, SERVO_OUTPUT_RAW, motor_ofs):
+ '''calculate heading from raw magnetometer'''
+ ofs = get_motor_offsets(SERVO_OUTPUT_RAW, ofs, motor_ofs)
+
+ if declination is None:
+ import mavutil
+ declination = degrees(mavutil.mavfile_global.param('COMPASS_DEC', 0))
+ mag_x = RAW_IMU.xmag
+ mag_y = RAW_IMU.ymag
+ mag_z = RAW_IMU.zmag
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ mag_x += ofs[0] - SENSOR_OFFSETS.mag_ofs_x
+ mag_y += ofs[1] - SENSOR_OFFSETS.mag_ofs_y
+ mag_z += ofs[2] - SENSOR_OFFSETS.mag_ofs_z
+
+ headX = mag_x*cos(ATTITUDE.pitch) + mag_y*sin(ATTITUDE.roll)*sin(ATTITUDE.pitch) + mag_z*cos(ATTITUDE.roll)*sin(ATTITUDE.pitch)
+ headY = mag_y*cos(ATTITUDE.roll) - mag_z*sin(ATTITUDE.roll)
+ heading = degrees(atan2(-headY,headX)) + declination
+ if heading < 0:
+ heading += 360
+ return heading
+
+def mag_field(RAW_IMU, SENSOR_OFFSETS=None, ofs=None):
+ '''calculate magnetic field strength from raw magnetometer'''
+ mag_x = RAW_IMU.xmag
+ mag_y = RAW_IMU.ymag
+ mag_z = RAW_IMU.zmag
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ mag_x += ofs[0] - SENSOR_OFFSETS.mag_ofs_x
+ mag_y += ofs[1] - SENSOR_OFFSETS.mag_ofs_y
+ mag_z += ofs[2] - SENSOR_OFFSETS.mag_ofs_z
+ return sqrt(mag_x**2 + mag_y**2 + mag_z**2)
+
+def mag_field_df(MAG, ofs=None):
+ '''calculate magnetic field strength from raw magnetometer (dataflash version)'''
+ mag = Vector3(MAG.MagX, MAG.MagY, MAG.MagZ)
+ offsets = Vector3(MAG.OfsX, MAG.OfsY, MAG.OfsZ)
+ if ofs is not None:
+ mag = (mag - offsets) + Vector3(ofs[0], ofs[1], ofs[2])
+ return mag.length()
+
+def get_motor_offsets(SERVO_OUTPUT_RAW, ofs, motor_ofs):
+ '''calculate magnetic field strength from raw magnetometer'''
+ import mavutil
+ self = mavutil.mavfile_global
+
+ m = SERVO_OUTPUT_RAW
+ motor_pwm = m.servo1_raw + m.servo2_raw + m.servo3_raw + m.servo4_raw
+ motor_pwm *= 0.25
+ rc3_min = self.param('RC3_MIN', 1100)
+ rc3_max = self.param('RC3_MAX', 1900)
+ motor = (motor_pwm - rc3_min) / (rc3_max - rc3_min)
+ if motor > 1.0:
+ motor = 1.0
+ if motor < 0.0:
+ motor = 0.0
+
+ motor_offsets0 = motor_ofs[0] * motor
+ motor_offsets1 = motor_ofs[1] * motor
+ motor_offsets2 = motor_ofs[2] * motor
+ ofs = (ofs[0] + motor_offsets0, ofs[1] + motor_offsets1, ofs[2] + motor_offsets2)
+
+ return ofs
+
+def mag_field_motors(RAW_IMU, SENSOR_OFFSETS, ofs, SERVO_OUTPUT_RAW, motor_ofs):
+ '''calculate magnetic field strength from raw magnetometer'''
+ mag_x = RAW_IMU.xmag
+ mag_y = RAW_IMU.ymag
+ mag_z = RAW_IMU.zmag
+
+ ofs = get_motor_offsets(SERVO_OUTPUT_RAW, ofs, motor_ofs)
+
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ mag_x += ofs[0] - SENSOR_OFFSETS.mag_ofs_x
+ mag_y += ofs[1] - SENSOR_OFFSETS.mag_ofs_y
+ mag_z += ofs[2] - SENSOR_OFFSETS.mag_ofs_z
+ return sqrt(mag_x**2 + mag_y**2 + mag_z**2)
+
+def angle_diff(angle1, angle2):
+ '''show the difference between two angles in degrees'''
+ ret = angle1 - angle2
+ if ret > 180:
+ ret -= 360;
+ if ret < -180:
+ ret += 360
+ return ret
+
+average_data = {}
+
+def average(var, key, N):
+ '''average over N points'''
+ global average_data
+ if not key in average_data:
+ average_data[key] = [var]*N
+ return var
+ average_data[key].pop(0)
+ average_data[key].append(var)
+ return sum(average_data[key])/N
+
+derivative_data = {}
+
+def second_derivative_5(var, key):
+ '''5 point 2nd derivative'''
+ global derivative_data
+ import mavutil
+ tnow = mavutil.mavfile_global.timestamp
+
+ if not key in derivative_data:
+ derivative_data[key] = (tnow, [var]*5)
+ return 0
+ (last_time, data) = derivative_data[key]
+ data.pop(0)
+ data.append(var)
+ derivative_data[key] = (tnow, data)
+ h = (tnow - last_time)
+ # N=5 2nd derivative from
+ # http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/
+ ret = ((data[4] + data[0]) - 2*data[2]) / (4*h**2)
+ return ret
+
+def second_derivative_9(var, key):
+ '''9 point 2nd derivative'''
+ global derivative_data
+ import mavutil
+ tnow = mavutil.mavfile_global.timestamp
+
+ if not key in derivative_data:
+ derivative_data[key] = (tnow, [var]*9)
+ return 0
+ (last_time, data) = derivative_data[key]
+ data.pop(0)
+ data.append(var)
+ derivative_data[key] = (tnow, data)
+ h = (tnow - last_time)
+ # N=5 2nd derivative from
+ # http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/
+ f = data
+ ret = ((f[8] + f[0]) + 4*(f[7] + f[1]) + 4*(f[6]+f[2]) - 4*(f[5]+f[3]) - 10*f[4])/(64*h**2)
+ return ret
+
+lowpass_data = {}
+
+def lowpass(var, key, factor):
+ '''a simple lowpass filter'''
+ global lowpass_data
+ if not key in lowpass_data:
+ lowpass_data[key] = var
+ else:
+ lowpass_data[key] = factor*lowpass_data[key] + (1.0 - factor)*var
+ return lowpass_data[key]
+
+last_diff = {}
+
+def diff(var, key):
+ '''calculate differences between values'''
+ global last_diff
+ ret = 0
+ if not key in last_diff:
+ last_diff[key] = var
+ return 0
+ ret = var - last_diff[key]
+ last_diff[key] = var
+ return ret
+
+last_delta = {}
+
+def delta(var, key, tusec=None):
+ '''calculate slope'''
+ global last_delta
+ if tusec is not None:
+ tnow = tusec * 1.0e-6
+ else:
+ import mavutil
+ tnow = mavutil.mavfile_global.timestamp
+ dv = 0
+ ret = 0
+ if key in last_delta:
+ (last_v, last_t, last_ret) = last_delta[key]
+ if last_t == tnow:
+ return last_ret
+ if tnow == last_t:
+ ret = 0
+ else:
+ ret = (var - last_v) / (tnow - last_t)
+ last_delta[key] = (var, tnow, ret)
+ return ret
+
+def delta_angle(var, key, tusec=None):
+ '''calculate slope of an angle'''
+ global last_delta
+ if tusec is not None:
+ tnow = tusec * 1.0e-6
+ else:
+ import mavutil
+ tnow = mavutil.mavfile_global.timestamp
+ dv = 0
+ ret = 0
+ if key in last_delta:
+ (last_v, last_t, last_ret) = last_delta[key]
+ if last_t == tnow:
+ return last_ret
+ if tnow == last_t:
+ ret = 0
+ else:
+ dv = var - last_v
+ if dv > 180:
+ dv -= 360
+ if dv < -180:
+ dv += 360
+ ret = dv / (tnow - last_t)
+ last_delta[key] = (var, tnow, ret)
+ return ret
+
+def roll_estimate(RAW_IMU,GPS_RAW_INT=None,ATTITUDE=None,SENSOR_OFFSETS=None, ofs=None, mul=None,smooth=0.7):
+ '''estimate roll from accelerometer'''
+ rx = RAW_IMU.xacc * 9.81 / 1000.0
+ ry = RAW_IMU.yacc * 9.81 / 1000.0
+ rz = RAW_IMU.zacc * 9.81 / 1000.0
+ if ATTITUDE is not None and GPS_RAW_INT is not None:
+ ry -= ATTITUDE.yawspeed * GPS_RAW_INT.vel*0.01
+ rz += ATTITUDE.pitchspeed * GPS_RAW_INT.vel*0.01
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ rx += SENSOR_OFFSETS.accel_cal_x
+ ry += SENSOR_OFFSETS.accel_cal_y
+ rz += SENSOR_OFFSETS.accel_cal_z
+ rx -= ofs[0]
+ ry -= ofs[1]
+ rz -= ofs[2]
+ if mul is not None:
+ rx *= mul[0]
+ ry *= mul[1]
+ rz *= mul[2]
+ return lowpass(degrees(-asin(ry/sqrt(rx**2+ry**2+rz**2))),'_roll',smooth)
+
+def pitch_estimate(RAW_IMU, GPS_RAW_INT=None,ATTITUDE=None, SENSOR_OFFSETS=None, ofs=None, mul=None, smooth=0.7):
+ '''estimate pitch from accelerometer'''
+ rx = RAW_IMU.xacc * 9.81 / 1000.0
+ ry = RAW_IMU.yacc * 9.81 / 1000.0
+ rz = RAW_IMU.zacc * 9.81 / 1000.0
+ if ATTITUDE is not None and GPS_RAW_INT is not None:
+ ry -= ATTITUDE.yawspeed * GPS_RAW_INT.vel*0.01
+ rz += ATTITUDE.pitchspeed * GPS_RAW_INT.vel*0.01
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ rx += SENSOR_OFFSETS.accel_cal_x
+ ry += SENSOR_OFFSETS.accel_cal_y
+ rz += SENSOR_OFFSETS.accel_cal_z
+ rx -= ofs[0]
+ ry -= ofs[1]
+ rz -= ofs[2]
+ if mul is not None:
+ rx *= mul[0]
+ ry *= mul[1]
+ rz *= mul[2]
+ return lowpass(degrees(asin(rx/sqrt(rx**2+ry**2+rz**2))),'_pitch',smooth)
+
+def rotation(ATTITUDE):
+ '''return the current DCM rotation matrix'''
+ r = Matrix3()
+ r.from_euler(ATTITUDE.roll, ATTITUDE.pitch, ATTITUDE.yaw)
+ return r
+
+def mag_rotation(RAW_IMU, inclination, declination):
+ '''return an attitude rotation matrix that is consistent with the current mag
+ vector'''
+ m_body = Vector3(RAW_IMU.xmag, RAW_IMU.ymag, RAW_IMU.zmag)
+ m_earth = Vector3(m_body.length(), 0, 0)
+
+ r = Matrix3()
+ r.from_euler(0, -radians(inclination), radians(declination))
+ m_earth = r * m_earth
+
+ r.from_two_vectors(m_earth, m_body)
+ return r
+
+def mag_yaw(RAW_IMU, inclination, declination):
+ '''estimate yaw from mag'''
+ m = mag_rotation(RAW_IMU, inclination, declination)
+ (r, p, y) = m.to_euler()
+ y = degrees(y)
+ if y < 0:
+ y += 360
+ return y
+
+def mag_pitch(RAW_IMU, inclination, declination):
+ '''estimate pithc from mag'''
+ m = mag_rotation(RAW_IMU, inclination, declination)
+ (r, p, y) = m.to_euler()
+ return degrees(p)
+
+def mag_roll(RAW_IMU, inclination, declination):
+ '''estimate roll from mag'''
+ m = mag_rotation(RAW_IMU, inclination, declination)
+ (r, p, y) = m.to_euler()
+ return degrees(r)
+
+def expected_mag(RAW_IMU, ATTITUDE, inclination, declination):
+ '''return expected mag vector'''
+ m_body = Vector3(RAW_IMU.xmag, RAW_IMU.ymag, RAW_IMU.zmag)
+ field_strength = m_body.length()
+
+ m = rotation(ATTITUDE)
+
+ r = Matrix3()
+ r.from_euler(0, -radians(inclination), radians(declination))
+ m_earth = r * Vector3(field_strength, 0, 0)
+
+ return m.transposed() * m_earth
+
+def mag_discrepancy(RAW_IMU, ATTITUDE, inclination, declination=None):
+ '''give the magnitude of the discrepancy between observed and expected magnetic field'''
+ if declination is None:
+ import mavutil
+ declination = degrees(mavutil.mavfile_global.param('COMPASS_DEC', 0))
+ expected = expected_mag(RAW_IMU, ATTITUDE, inclination, declination)
+ mag = Vector3(RAW_IMU.xmag, RAW_IMU.ymag, RAW_IMU.zmag)
+ return degrees(expected.angle(mag))
+
+
+def mag_inclination(RAW_IMU, ATTITUDE, declination=None):
+ '''give the magnitude of the discrepancy between observed and expected magnetic field'''
+ if declination is None:
+ import mavutil
+ declination = degrees(mavutil.mavfile_global.param('COMPASS_DEC', 0))
+ r = rotation(ATTITUDE)
+ mag1 = Vector3(RAW_IMU.xmag, RAW_IMU.ymag, RAW_IMU.zmag)
+ mag1 = r * mag1
+ mag2 = Vector3(cos(radians(declination)), sin(radians(declination)), 0)
+ inclination = degrees(mag1.angle(mag2))
+ if RAW_IMU.zmag < 0:
+ inclination = -inclination
+ return inclination
+
+def expected_magx(RAW_IMU, ATTITUDE, inclination, declination):
+ '''estimate from mag'''
+ v = expected_mag(RAW_IMU, ATTITUDE, inclination, declination)
+ return v.x
+
+def expected_magy(RAW_IMU, ATTITUDE, inclination, declination):
+ '''estimate from mag'''
+ v = expected_mag(RAW_IMU, ATTITUDE, inclination, declination)
+ return v.y
+
+def expected_magz(RAW_IMU, ATTITUDE, inclination, declination):
+ '''estimate from mag'''
+ v = expected_mag(RAW_IMU, ATTITUDE, inclination, declination)
+ return v.z
+
+def gravity(RAW_IMU, SENSOR_OFFSETS=None, ofs=None, mul=None, smooth=0.7):
+ '''estimate pitch from accelerometer'''
+ if hasattr(RAW_IMU, 'xacc'):
+ rx = RAW_IMU.xacc * 9.81 / 1000.0
+ ry = RAW_IMU.yacc * 9.81 / 1000.0
+ rz = RAW_IMU.zacc * 9.81 / 1000.0
+ else:
+ rx = RAW_IMU.AccX
+ ry = RAW_IMU.AccY
+ rz = RAW_IMU.AccZ
+ if SENSOR_OFFSETS is not None and ofs is not None:
+ rx += SENSOR_OFFSETS.accel_cal_x
+ ry += SENSOR_OFFSETS.accel_cal_y
+ rz += SENSOR_OFFSETS.accel_cal_z
+ rx -= ofs[0]
+ ry -= ofs[1]
+ rz -= ofs[2]
+ if mul is not None:
+ rx *= mul[0]
+ ry *= mul[1]
+ rz *= mul[2]
+ return sqrt(rx**2+ry**2+rz**2)
+
+
+
+def pitch_sim(SIMSTATE, GPS_RAW):
+ '''estimate pitch from SIMSTATE accels'''
+ xacc = SIMSTATE.xacc - lowpass(delta(GPS_RAW.v,"v")*6.6, "v", 0.9)
+ zacc = SIMSTATE.zacc
+ zacc += SIMSTATE.ygyro * GPS_RAW.v;
+ if xacc/zacc >= 1:
+ return 0
+ if xacc/zacc <= -1:
+ return -0
+ return degrees(-asin(xacc/zacc))
+
+def distance_two(GPS_RAW1, GPS_RAW2, horizontal=True):
+ '''distance between two points'''
+ if hasattr(GPS_RAW1, 'Lat'):
+ lat1 = radians(GPS_RAW1.Lat)
+ lat2 = radians(GPS_RAW2.Lat)
+ lon1 = radians(GPS_RAW1.Lng)
+ lon2 = radians(GPS_RAW2.Lng)
+ alt1 = GPS_RAW1.Alt
+ alt2 = GPS_RAW2.Alt
+ elif hasattr(GPS_RAW1, 'cog'):
+ lat1 = radians(GPS_RAW1.lat)*1.0e-7
+ lat2 = radians(GPS_RAW2.lat)*1.0e-7
+ lon1 = radians(GPS_RAW1.lon)*1.0e-7
+ lon2 = radians(GPS_RAW2.lon)*1.0e-7
+ alt1 = GPS_RAW1.alt*0.001
+ alt2 = GPS_RAW2.alt*0.001
+ else:
+ lat1 = radians(GPS_RAW1.lat)
+ lat2 = radians(GPS_RAW2.lat)
+ lon1 = radians(GPS_RAW1.lon)
+ lon2 = radians(GPS_RAW2.lon)
+ alt1 = GPS_RAW1.alt*0.001
+ alt2 = GPS_RAW2.alt*0.001
+ dLat = lat2 - lat1
+ dLon = lon2 - lon1
+
+ a = sin(0.5*dLat)**2 + sin(0.5*dLon)**2 * cos(lat1) * cos(lat2)
+ c = 2.0 * atan2(sqrt(a), sqrt(1.0-a))
+ ground_dist = 6371 * 1000 * c
+ if horizontal:
+ return ground_dist
+ return sqrt(ground_dist**2 + (alt2-alt1)**2)
+
+
+first_fix = None
+
+def distance_home(GPS_RAW):
+ '''distance from first fix point'''
+ global first_fix
+ if (hasattr(GPS_RAW, 'fix_type') and GPS_RAW.fix_type < 2) or \
+ (hasattr(GPS_RAW, 'Status') and GPS_RAW.Status < 2):
+ return 0
+
+ if first_fix == None:
+ first_fix = GPS_RAW
+ return 0
+ return distance_two(GPS_RAW, first_fix)
+
+def sawtooth(ATTITUDE, amplitude=2.0, period=5.0):
+ '''sawtooth pattern based on uptime'''
+ mins = (ATTITUDE.usec * 1.0e-6)/60
+ p = fmod(mins, period*2)
+ if p < period:
+ return amplitude * (p/period)
+ return amplitude * (period - (p-period))/period
+
+def rate_of_turn(speed, bank):
+ '''return expected rate of turn in degrees/s for given speed in m/s and
+ bank angle in degrees'''
+ if abs(speed) < 2 or abs(bank) > 80:
+ return 0
+ ret = degrees(9.81*tan(radians(bank))/speed)
+ return ret
+
+def wingloading(bank):
+ '''return expected wing loading factor for a bank angle in radians'''
+ return 1.0/cos(bank)
+
+def airspeed(VFR_HUD, ratio=None, used_ratio=None, offset=None):
+ '''recompute airspeed with a different ARSPD_RATIO'''
+ import mavutil
+ mav = mavutil.mavfile_global
+ if ratio is None:
+ ratio = 1.9936 # APM default
+ if used_ratio is None:
+ if 'ARSPD_RATIO' in mav.params:
+ used_ratio = mav.params['ARSPD_RATIO']
+ else:
+ print("no ARSPD_RATIO in mav.params")
+ used_ratio = ratio
+ if hasattr(VFR_HUD,'airspeed'):
+ airspeed = VFR_HUD.airspeed
+ else:
+ airspeed = VFR_HUD.Airspeed
+ airspeed_pressure = (airspeed**2) / used_ratio
+ if offset is not None:
+ airspeed_pressure += offset
+ if airspeed_pressure < 0:
+ airspeed_pressure = 0
+ airspeed = sqrt(airspeed_pressure * ratio)
+ return airspeed
+
+def EAS2TAS(ARSP,GPS,BARO,ground_temp=25):
+ '''EAS2TAS from ARSP.Temp'''
+ tempK = ground_temp + 273.15 - 0.0065 * GPS.Alt
+ return sqrt(1.225 / (BARO.Press / (287.26 * tempK)))
+
+
+def airspeed_ratio(VFR_HUD):
+ '''recompute airspeed with a different ARSPD_RATIO'''
+ import mavutil
+ mav = mavutil.mavfile_global
+ airspeed_pressure = (VFR_HUD.airspeed**2) / ratio
+ airspeed = sqrt(airspeed_pressure * ratio)
+ return airspeed
+
+def airspeed_voltage(VFR_HUD, ratio=None):
+ '''back-calculate the voltage the airspeed sensor must have seen'''
+ import mavutil
+ mav = mavutil.mavfile_global
+ if ratio is None:
+ ratio = 1.9936 # APM default
+ if 'ARSPD_RATIO' in mav.params:
+ used_ratio = mav.params['ARSPD_RATIO']
+ else:
+ used_ratio = ratio
+ if 'ARSPD_OFFSET' in mav.params:
+ offset = mav.params['ARSPD_OFFSET']
+ else:
+ return -1
+ airspeed_pressure = (pow(VFR_HUD.airspeed,2)) / used_ratio
+ raw = airspeed_pressure + offset
+ SCALING_OLD_CALIBRATION = 204.8
+ voltage = 5.0 * raw / 4096
+ return voltage
+
+
+def earth_rates(ATTITUDE):
+ '''return angular velocities in earth frame'''
+ from math import sin, cos, tan, fabs
+
+ p = ATTITUDE.rollspeed
+ q = ATTITUDE.pitchspeed
+ r = ATTITUDE.yawspeed
+ phi = ATTITUDE.roll
+ theta = ATTITUDE.pitch
+ psi = ATTITUDE.yaw
+
+ phiDot = p + tan(theta)*(q*sin(phi) + r*cos(phi))
+ thetaDot = q*cos(phi) - r*sin(phi)
+ if fabs(cos(theta)) < 1.0e-20:
+ theta += 1.0e-10
+ psiDot = (q*sin(phi) + r*cos(phi))/cos(theta)
+ return (phiDot, thetaDot, psiDot)
+
+def roll_rate(ATTITUDE):
+ '''return roll rate in earth frame'''
+ (phiDot, thetaDot, psiDot) = earth_rates(ATTITUDE)
+ return phiDot
+
+def pitch_rate(ATTITUDE):
+ '''return pitch rate in earth frame'''
+ (phiDot, thetaDot, psiDot) = earth_rates(ATTITUDE)
+ return thetaDot
+
+def yaw_rate(ATTITUDE):
+ '''return yaw rate in earth frame'''
+ (phiDot, thetaDot, psiDot) = earth_rates(ATTITUDE)
+ return psiDot
+
+
+def gps_velocity(GLOBAL_POSITION_INT):
+ '''return GPS velocity vector'''
+ return Vector3(GLOBAL_POSITION_INT.vx, GLOBAL_POSITION_INT.vy, GLOBAL_POSITION_INT.vz) * 0.01
+
+
+def gps_velocity_old(GPS_RAW_INT):
+ '''return GPS velocity vector'''
+ return Vector3(GPS_RAW_INT.vel*0.01*cos(radians(GPS_RAW_INT.cog*0.01)),
+ GPS_RAW_INT.vel*0.01*sin(radians(GPS_RAW_INT.cog*0.01)), 0)
+
+def gps_velocity_body(GPS_RAW_INT, ATTITUDE):
+ '''return GPS velocity vector in body frame'''
+ r = rotation(ATTITUDE)
+ return r.transposed() * Vector3(GPS_RAW_INT.vel*0.01*cos(radians(GPS_RAW_INT.cog*0.01)),
+ GPS_RAW_INT.vel*0.01*sin(radians(GPS_RAW_INT.cog*0.01)),
+ -tan(ATTITUDE.pitch)*GPS_RAW_INT.vel*0.01)
+
+def earth_accel(RAW_IMU,ATTITUDE):
+ '''return earth frame acceleration vector'''
+ r = rotation(ATTITUDE)
+ accel = Vector3(RAW_IMU.xacc, RAW_IMU.yacc, RAW_IMU.zacc) * 9.81 * 0.001
+ return r * accel
+
+def earth_gyro(RAW_IMU,ATTITUDE):
+ '''return earth frame gyro vector'''
+ r = rotation(ATTITUDE)
+ accel = Vector3(degrees(RAW_IMU.xgyro), degrees(RAW_IMU.ygyro), degrees(RAW_IMU.zgyro)) * 0.001
+ return r * accel
+
+def airspeed_energy_error(NAV_CONTROLLER_OUTPUT, VFR_HUD):
+ '''return airspeed energy error matching APM internals
+ This is positive when we are going too slow
+ '''
+ aspeed_cm = VFR_HUD.airspeed*100
+ target_airspeed = NAV_CONTROLLER_OUTPUT.aspd_error + aspeed_cm
+ airspeed_energy_error = ((target_airspeed*target_airspeed) - (aspeed_cm*aspeed_cm))*0.00005
+ return airspeed_energy_error
+
+
+def energy_error(NAV_CONTROLLER_OUTPUT, VFR_HUD):
+ '''return energy error matching APM internals
+ This is positive when we are too low or going too slow
+ '''
+ aspeed_energy_error = airspeed_energy_error(NAV_CONTROLLER_OUTPUT, VFR_HUD)
+ alt_error = NAV_CONTROLLER_OUTPUT.alt_error*100
+ energy_error = aspeed_energy_error + alt_error*0.098
+ return energy_error
+
+def rover_turn_circle(SERVO_OUTPUT_RAW):
+ '''return turning circle (diameter) in meters for steering_angle in degrees
+ '''
+
+ # this matches Toms slash
+ max_wheel_turn = 35
+ wheelbase = 0.335
+ wheeltrack = 0.296
+
+ steering_angle = max_wheel_turn * (SERVO_OUTPUT_RAW.servo1_raw - 1500) / 400.0
+ theta = radians(steering_angle)
+ return (wheeltrack/2) + (wheelbase/sin(theta))
+
+def rover_yaw_rate(VFR_HUD, SERVO_OUTPUT_RAW):
+ '''return yaw rate in degrees/second given steering_angle and speed'''
+ max_wheel_turn=35
+ speed = VFR_HUD.groundspeed
+ # assume 1100 to 1900 PWM on steering
+ steering_angle = max_wheel_turn * (SERVO_OUTPUT_RAW.servo1_raw - 1500) / 400.0
+ if abs(steering_angle) < 1.0e-6 or abs(speed) < 1.0e-6:
+ return 0
+ d = rover_turn_circle(SERVO_OUTPUT_RAW)
+ c = pi * d
+ t = c / speed
+ rate = 360.0 / t
+ return rate
+
+def rover_lat_accel(VFR_HUD, SERVO_OUTPUT_RAW):
+ '''return lateral acceleration in m/s/s'''
+ speed = VFR_HUD.groundspeed
+ yaw_rate = rover_yaw_rate(VFR_HUD, SERVO_OUTPUT_RAW)
+ accel = radians(yaw_rate) * speed
+ return accel
+
+
+def demix1(servo1, servo2, gain=0.5):
+ '''de-mix a mixed servo output'''
+ s1 = servo1 - 1500
+ s2 = servo2 - 1500
+ out1 = (s1+s2)*gain
+ out2 = (s1-s2)*gain
+ return out1+1500
+
+def demix2(servo1, servo2, gain=0.5):
+ '''de-mix a mixed servo output'''
+ s1 = servo1 - 1500
+ s2 = servo2 - 1500
+ out1 = (s1+s2)*gain
+ out2 = (s1-s2)*gain
+ return out2+1500
+
+def mixer(servo1, servo2, mixtype=1, gain=0.5):
+ '''mix two servos'''
+ s1 = servo1 - 1500
+ s2 = servo2 - 1500
+ v1 = (s1-s2)*gain
+ v2 = (s1+s2)*gain
+ if mixtype == 2:
+ v2 = -v2
+ elif mixtype == 3:
+ v1 = -v1
+ elif mixtype == 4:
+ v1 = -v1
+ v2 = -v2
+ if v1 > 600:
+ v1 = 600
+ elif v1 < -600:
+ v1 = -600
+ if v2 > 600:
+ v2 = 600
+ elif v2 < -600:
+ v2 = -600
+ return (1500+v1,1500+v2)
+
+def mix1(servo1, servo2, mixtype=1, gain=0.5):
+ '''de-mix a mixed servo output'''
+ (v1,v2) = mixer(servo1, servo2, mixtype=mixtype, gain=gain)
+ return v1
+
+def mix2(servo1, servo2, mixtype=1, gain=0.5):
+ '''de-mix a mixed servo output'''
+ (v1,v2) = mixer(servo1, servo2, mixtype=mixtype, gain=gain)
+ return v2
+
+def wrap_180(angle):
+ if angle > 180:
+ angle -= 360.0
+ if angle < -180:
+ angle += 360.0
+ return angle
+
+
+def wrap_360(angle):
+ if angle > 360:
+ angle -= 360.0
+ if angle < 0:
+ angle += 360.0
+ return angle
+
+class DCM_State(object):
+ '''DCM state object'''
+ def __init__(self, roll, pitch, yaw):
+ self.dcm = Matrix3()
+ self.dcm2 = Matrix3()
+ self.dcm.from_euler(radians(roll), radians(pitch), radians(yaw))
+ self.dcm2.from_euler(radians(roll), radians(pitch), radians(yaw))
+ self.mag = Vector3()
+ self.gyro = Vector3()
+ self.accel = Vector3()
+ self.gps = None
+ self.rate = 50.0
+ self.kp = 0.2
+ self.kp_yaw = 0.3
+ self.omega_P = Vector3()
+ self.omega_P_yaw = Vector3()
+ self.omega_I = Vector3() # (-0.00199045287445, -0.00653007719666, -0.00714212376624)
+ self.omega_I_sum = Vector3()
+ self.omega_I_sum_time = 0
+ self.omega = Vector3()
+ self.ra_sum = Vector3()
+ self.last_delta_angle = Vector3()
+ self.last_velocity = Vector3()
+ (self.roll, self.pitch, self.yaw) = self.dcm.to_euler()
+ (self.roll2, self.pitch2, self.yaw2) = self.dcm2.to_euler()
+
+ def update(self, gyro, accel, mag, GPS):
+ if self.gyro != gyro or self.accel != accel:
+ delta_angle = (gyro+self.omega_I) / self.rate
+ self.dcm.rotate(delta_angle)
+ correction = self.last_delta_angle % delta_angle
+ #print (delta_angle - self.last_delta_angle) * 58.0
+ corrected_delta = delta_angle + 0.0833333 * correction
+ self.dcm2.rotate(corrected_delta)
+ self.last_delta_angle = delta_angle
+
+ self.dcm.normalize()
+ self.dcm2.normalize()
+
+ self.gyro = gyro
+ self.accel = accel
+ (self.roll, self.pitch, self.yaw) = self.dcm.to_euler()
+ (self.roll2, self.pitch2, self.yaw2) = self.dcm2.to_euler()
+
+dcm_state = None
+
+def DCM_update(IMU, ATT, MAG, GPS):
+ '''implement full DCM system'''
+ global dcm_state
+ if dcm_state is None:
+ dcm_state = DCM_State(ATT.Roll, ATT.Pitch, ATT.Yaw)
+
+ mag = Vector3(MAG.MagX, MAG.MagY, MAG.MagZ)
+ gyro = Vector3(IMU.GyrX, IMU.GyrY, IMU.GyrZ)
+ accel = Vector3(IMU.AccX, IMU.AccY, IMU.AccZ)
+ accel2 = Vector3(IMU.AccX, IMU.AccY, IMU.AccZ)
+ dcm_state.update(gyro, accel, mag, GPS)
+ return dcm_state
+
+class PX4_State(object):
+ '''PX4 DCM state object'''
+ def __init__(self, roll, pitch, yaw, timestamp):
+ self.dcm = Matrix3()
+ self.dcm.from_euler(radians(roll), radians(pitch), radians(yaw))
+ self.gyro = Vector3()
+ self.accel = Vector3()
+ self.timestamp = timestamp
+ (self.roll, self.pitch, self.yaw) = self.dcm.to_euler()
+
+ def update(self, gyro, accel, timestamp):
+ if self.gyro != gyro or self.accel != accel:
+ delta_angle = gyro * (timestamp - self.timestamp)
+ self.timestamp = timestamp
+ self.dcm.rotate(delta_angle)
+ self.dcm.normalize()
+ self.gyro = gyro
+ self.accel = accel
+ (self.roll, self.pitch, self.yaw) = self.dcm.to_euler()
+
+px4_state = None
+
+def PX4_update(IMU, ATT):
+ '''implement full DCM using PX4 native SD log data'''
+ global px4_state
+ if px4_state is None:
+ px4_state = PX4_State(degrees(ATT.Roll), degrees(ATT.Pitch), degrees(ATT.Yaw), IMU._timestamp)
+
+ gyro = Vector3(IMU.GyroX, IMU.GyroY, IMU.GyroZ)
+ accel = Vector3(IMU.AccX, IMU.AccY, IMU.AccZ)
+ px4_state.update(gyro, accel, IMU._timestamp)
+ return px4_state
+
+_downsample_N = 0
+
+def downsample(N):
+ '''conditional that is true on every Nth sample'''
+ global _downsample_N
+ _downsample_N = (_downsample_N + 1) % N
+ return _downsample_N == 0
+
+def armed(HEARTBEAT):
+ '''return 1 if armed, 0 if not'''
+ from . import mavutil
+ if HEARTBEAT.type == mavutil.mavlink.MAV_TYPE_GCS:
+ self = mavutil.mavfile_global
+ if self.motors_armed():
+ return 1
+ return 0
+ if HEARTBEAT.base_mode & mavutil.mavlink.MAV_MODE_FLAG_SAFETY_ARMED:
+ return 1
+ return 0
+
+def rotation_df(ATT):
+ '''return the current DCM rotation matrix'''
+ r = Matrix3()
+ r.from_euler(radians(ATT.Roll), radians(ATT.Pitch), radians(ATT.Yaw))
+ return r
+
+def rotation2(AHRS2):
+ '''return the current DCM rotation matrix'''
+ r = Matrix3()
+ r.from_euler(AHRS2.roll, AHRS2.pitch, AHRS2.yaw)
+ return r
+
+def earth_accel2(RAW_IMU,ATTITUDE):
+ '''return earth frame acceleration vector from AHRS2'''
+ r = rotation2(ATTITUDE)
+ accel = Vector3(RAW_IMU.xacc, RAW_IMU.yacc, RAW_IMU.zacc) * 9.81 * 0.001
+ return r * accel
+
+def earth_accel_df(IMU,ATT):
+ '''return earth frame acceleration vector from df log'''
+ r = rotation_df(ATT)
+ accel = Vector3(IMU.AccX, IMU.AccY, IMU.AccZ)
+ return r * accel
+
+def earth_accel2_df(IMU,IMU2,ATT):
+ '''return earth frame acceleration vector from df log'''
+ r = rotation_df(ATT)
+ accel1 = Vector3(IMU.AccX, IMU.AccY, IMU.AccZ)
+ accel2 = Vector3(IMU2.AccX, IMU2.AccY, IMU2.AccZ)
+ accel = 0.5 * (accel1 + accel2)
+ return r * accel
+
+def gps_velocity_df(GPS):
+ '''return GPS velocity vector'''
+ vx = GPS.Spd * cos(radians(GPS.GCrs))
+ vy = GPS.Spd * sin(radians(GPS.GCrs))
+ return Vector3(vx, vy, GPS.VZ)
+
+def distance_gps2(GPS, GPS2):
+ '''distance between two points'''
+ if GPS.TimeMS != GPS2.TimeMS:
+ # reject messages not time aligned
+ return None
+ return distance_two(GPS, GPS2)
+
+
+radius_of_earth = 6378100.0 # in meters
+
+def wrap_valid_longitude(lon):
+ ''' wrap a longitude value around to always have a value in the range
+ [-180, +180) i.e 0 => 0, 1 => 1, -1 => -1, 181 => -179, -181 => 179
+ '''
+ return (((lon + 180.0) % 360.0) - 180.0)
+
+def gps_newpos(lat, lon, bearing, distance):
+ '''extrapolate latitude/longitude given a heading and distance
+ thanks to http://www.movable-type.co.uk/scripts/latlong.html
+ '''
+ import math
+ lat1 = math.radians(lat)
+ lon1 = math.radians(lon)
+ brng = math.radians(bearing)
+ dr = distance/radius_of_earth
+
+ lat2 = math.asin(math.sin(lat1)*math.cos(dr) +
+ math.cos(lat1)*math.sin(dr)*math.cos(brng))
+ lon2 = lon1 + math.atan2(math.sin(brng)*math.sin(dr)*math.cos(lat1),
+ math.cos(dr)-math.sin(lat1)*math.sin(lat2))
+ return (math.degrees(lat2), wrap_valid_longitude(math.degrees(lon2)))
+
+def gps_offset(lat, lon, east, north):
+ '''return new lat/lon after moving east/north
+ by the given number of meters'''
+ import math
+ bearing = math.degrees(math.atan2(east, north))
+ distance = math.sqrt(east**2 + north**2)
+ return gps_newpos(lat, lon, bearing, distance)
+
+ekf_home = None
+
+def ekf1_pos(EKF1):
+ '''calculate EKF position when EKF disabled'''
+ global ekf_home
+ from . import mavutil
+ self = mavutil.mavfile_global
+ if ekf_home is None:
+ if not 'GPS' in self.messages or self.messages['GPS'].Status != 3:
+ return None
+ ekf_home = self.messages['GPS']
+ (ekf_home.Lat, ekf_home.Lng) = gps_offset(ekf_home.Lat, ekf_home.Lng, -EKF1.PE, -EKF1.PN)
+ (lat,lon) = gps_offset(ekf_home.Lat, ekf_home.Lng, EKF1.PE, EKF1.PN)
+ return (lat, lon)
+
+def quat_to_euler(q):
+ '''
+ Get Euler angles from a quaternion
+ :param q: quaternion [w, x, y , z]
+ :returns: euler angles [roll, pitch, yaw]
+ '''
+ quat = Quaternion(q)
+ return quat.euler
+
+def euler_to_quat(e):
+ '''
+ Get quaternion from euler angles
+ :param e: euler angles [roll, pitch, yaw]
+ :returns: quaternion [w, x, y , z]
+ '''
+ quat = Quaternion(e)
+ return quat.q
+
+def rotate_quat(attitude, roll, pitch, yaw):
+ '''
+ Returns rotated quaternion
+ :param attitude: quaternion [w, x, y , z]
+ :param roll: rotation in rad
+ :param pitch: rotation in rad
+ :param yaw: rotation in rad
+ :returns: quaternion [w, x, y , z]
+ '''
+ quat = Quaternion(attitude)
+ rotation = Quaternion([roll, pitch, yaw])
+ res = rotation * quat
+
+ return res.q
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavlink_defaults.h b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavlink_defaults.h
new file mode 100644
index 000000000..316e64c33
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavlink_defaults.h
@@ -0,0 +1,22 @@
+#ifndef _MAVLINK_DEFAULTS_H
+#define _MAVLINK_DEFAULTS_H
+
+// This is normally dynamically generated as mavlink.h, but we just use the same settings for all native stacks
+
+#ifndef MAVLINK_STX
+#define MAVLINK_STX 254
+#endif
+
+#ifndef MAVLINK_ENDIAN
+#define MAVLINK_ENDIAN MAVLINK_LITTLE_ENDIAN
+#endif
+
+#ifndef MAVLINK_ALIGNED_FIELDS
+#define MAVLINK_ALIGNED_FIELDS 1
+#endif
+
+#ifndef MAVLINK_CRC_EXTRA
+#define MAVLINK_CRC_EXTRA 1
+#endif
+
+#endif
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavnative.c b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavnative.c
new file mode 100644
index 000000000..ab3f5af27
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavnative/mavnative.c
@@ -0,0 +1,977 @@
+/*
+ Native mavlink glue for python.
+ Author: kevinh@geeksville.com
+*/
+
+#undef NDEBUG
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#if PY_MAJOR_VERSION >= 3
+// In python3 it only has longs, not 32 bit ints
+#define PyInt_AsLong PyLong_AsLong
+#define PyInt_FromLong PyLong_FromLong
+
+// We returns strings for byte arreays in python2, but bytes objects in python3
+#define PyByteString_FromString PyBytes_FromString
+#define PyByteString_FromStringAndSize PyBytes_FromStringAndSize
+#define PyByteString_ConcatAndDel PyBytes_ConcatAndDel
+#else
+#define PyByteString_FromString PyString_FromString
+#define PyByteString_FromStringAndSize PyString_FromStringAndSize
+#define PyByteString_ConcatAndDel PyString_ConcatAndDel
+#endif
+
+#include "mavlink_defaults.h"
+
+#define MAVLINK_USE_CONVENIENCE_FUNCTIONS
+
+#include
+
+// Mavlink send support
+// Not currently used, but keeps mavlink_helpers send code happy
+static mavlink_system_t mavlink_system = {42,11,};
+static void comm_send_ch(mavlink_channel_t chan, uint8_t c) {
+ // Sending not supported yet in native code
+ assert(0);
+}
+
+#define MAVLINK_ASSERT(x) assert(x)
+
+// static mavlink_message_t last_msg;
+
+/*
+ default message crc function. You can override this per-system to
+ put this data in a different memory segment
+*/
+#define MAVLINK_MESSAGE_CRC(msgid) py_message_info[msgid].crc_extra
+
+/* Enable this option to check the length of each message.
+ This allows invalid messages to be caught much sooner. Use if the transmission
+ medium is prone to missing (or extra) characters (e.g. a radio that fades in
+ and out). Only use if the channel will only contain messages types listed in
+ the headers.
+*/
+
+#define MAVLINK_MESSAGE_LENGTH(msgid) py_message_info[msgid].len
+
+// #include
+
+#define TRUE 1
+#define FALSE 0
+
+typedef struct {
+ PyObject *name; // name of this field
+ mavlink_message_type_t type; // type of this field
+ unsigned int array_length; // if non-zero, field is an array
+ unsigned int wire_offset; // offset of each field in the payload
+} py_field_info_t;
+
+// note that in this structure the order of fields is the order
+// in the XML file, not necessary the wire order
+typedef struct {
+ PyObject *id; // The int id for this msg
+ PyObject *name; // name of the message
+ unsigned len; // the raw message length of this message - not including headers & CRC
+ uint8_t crc_extra; // the CRC extra for this message
+ unsigned num_fields; // how many fields in this message
+ PyObject *fieldnames; // fieldnames in the correct order expected by user (not wire order)
+ py_field_info_t fields[MAVLINK_MAX_FIELDS]; // field information
+} py_message_info_t;
+
+static py_message_info_t py_message_info[256];
+static uint8_t info_inited = FALSE; // We only do the init once (assuming only one dialect in use)
+
+#include
+
+/**
+ * Contains a structure mavlink_message but also the raw bytes that make up that message
+ */
+typedef struct {
+ mavlink_message_t msg;
+ int numBytes;
+ uint8_t bytes[MAVLINK_MAX_PACKET_LEN];
+} py_message_t;
+
+typedef struct {
+ PyObject_HEAD
+
+ PyObject *MAVLinkMessage;
+ mavlink_status_t mav_status;
+ py_message_t msg;
+} NativeConnection;
+
+// #define MAVNATIVE_DEBUG
+#ifdef MAVNATIVE_DEBUG
+# define mavdebug printf
+#else
+# define mavdebug(x...)
+#endif
+
+
+// My exception type
+static PyObject *MAVNativeError;
+
+static jmp_buf python_entry;
+
+#define PYTHON_ENTRY if(!setjmp(python_entry)) {
+#define PYTHON_EXIT } else { return NULL; } // Used for routines thar return ptrs
+#define PYTHON_EXIT_INT } else { return -1; } // Used for routines that return ints
+
+
+/** (originally from mavlink_helpers.h - but now customized to not be channel based)
+ * This is a convenience function which handles the complete MAVLink parsing.
+ * the function will parse one byte at a time and return the complete packet once
+ * it could be successfully decoded. Checksum and other failures will be silently
+ * ignored.
+ *
+ * Messages are parsed into an internal buffer (one for each channel). When a complete
+ * message is received it is copies into *returnMsg and the channel's status is
+ * copied into *returnStats.
+ *
+ * @param c The char to parse
+ *
+ * @param returnMsg NULL if no message could be decoded, the message data else
+ * @param returnStats if a message was decoded, this is filled with the channel's stats
+ * @return 0 if no message could be decoded, 1 else
+ *
+ */
+MAVLINK_HELPER uint8_t py_mavlink_parse_char(uint8_t c, py_message_t* pymsg, mavlink_status_t* status)
+{
+ mavlink_message_t *rxmsg = &pymsg->msg;
+
+ int bufferIndex = 0;
+
+ status->msg_received = 0;
+
+ switch (status->parse_state)
+ {
+ case MAVLINK_PARSE_STATE_UNINIT:
+ case MAVLINK_PARSE_STATE_IDLE:
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ pymsg->numBytes = 0;
+ rxmsg->magic = c;
+ mavlink_start_checksum(rxmsg);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_STX:
+ if (status->msg_received
+/* Support shorter buffers than the
+ default maximum packet size */
+#if (MAVLINK_MAX_PAYLOAD_LEN < 255)
+ || c > MAVLINK_MAX_PAYLOAD_LEN
+#endif
+ )
+ {
+ status->buffer_overrun++;
+ status->parse_error++;
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ }
+ else
+ {
+ // NOT counting STX, LENGTH, SEQ, SYSID, COMPID, MSGID, CRC1 and CRC2
+ rxmsg->len = c;
+ status->packet_idx = 0;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_LENGTH;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_LENGTH:
+ rxmsg->seq = c;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SEQ;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SEQ:
+ rxmsg->sysid = c;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_SYSID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_SYSID:
+ rxmsg->compid = c;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_COMPID;
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_COMPID:
+#ifdef MAVLINK_CHECK_MESSAGE_LENGTH
+ if (rxmsg->len != MAVLINK_MESSAGE_LENGTH(c))
+ {
+ status->parse_error++;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ break;
+ }
+#endif
+ rxmsg->msgid = c;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ if (rxmsg->len == 0)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ else
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_MSGID;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_MSGID:
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx++] = (char)c;
+ mavlink_update_checksum(rxmsg, c);
+ pymsg->bytes[pymsg->numBytes++] = c;
+ if (status->packet_idx == rxmsg->len)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_PAYLOAD;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_PAYLOAD:
+#if MAVLINK_CRC_EXTRA
+ mavlink_update_checksum(rxmsg, MAVLINK_MESSAGE_CRC(rxmsg->msgid));
+#endif
+ pymsg->bytes[pymsg->numBytes++] = c;
+ if (c != (rxmsg->checksum & 0xFF)) {
+ // Check first checksum byte
+ status->parse_error++;
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ mavlink_start_checksum(rxmsg);
+ }
+ }
+ else
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_CRC1;
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx] = (char)c;
+ }
+ break;
+
+ case MAVLINK_PARSE_STATE_GOT_CRC1:
+ pymsg->bytes[pymsg->numBytes++] = c;
+ if (c != (rxmsg->checksum >> 8)) {
+ // Check second checksum byte
+ status->parse_error++;
+ status->msg_received = 0;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ if (c == MAVLINK_STX)
+ {
+ status->parse_state = MAVLINK_PARSE_STATE_GOT_STX;
+ rxmsg->len = 0;
+ mavlink_start_checksum(rxmsg);
+ }
+ }
+ else
+ {
+ // Successfully got message
+ status->msg_received = 1;
+ status->parse_state = MAVLINK_PARSE_STATE_IDLE;
+ _MAV_PAYLOAD_NON_CONST(rxmsg)[status->packet_idx+1] = (char)c;
+ }
+ break;
+ }
+
+ bufferIndex++;
+ // If a message has been sucessfully decoded, check index
+ if (status->msg_received == 1)
+ {
+ //while(status->current_seq != rxmsg->seq)
+ //{
+ // status->packet_rx_drop_count++;
+ // status->current_seq++;
+ //}
+ status->current_rx_seq = rxmsg->seq;
+ // Initial condition: If no packet has been received so far, drop count is undefined
+ if (status->packet_rx_success_count == 0) status->packet_rx_drop_count = 0;
+ // Count this packet as received
+ status->packet_rx_success_count++;
+ }
+
+ return status->msg_received;
+}
+
+
+// Raise a python exception
+static void set_pyerror(const char *msg) {
+ PyErr_SetString(MAVNativeError, msg);
+}
+
+// Pass assertion failures back to python (if we can)
+extern void __assert_fail(const char *__assertion, const char *__file, unsigned int __line, const char *__function)
+{
+ char msg[256];
+
+ sprintf(msg, "Assertion failed: %s, %s:%d", __assertion, __file, __line);
+
+ set_pyerror(msg);
+ longjmp(python_entry, 1);
+}
+
+
+static unsigned get_field_size(int field_type) {
+ unsigned fieldSize;
+
+ switch(field_type)
+ {
+ case MAVLINK_TYPE_CHAR:
+ fieldSize = 1;
+ break;
+ case MAVLINK_TYPE_UINT8_T:
+ fieldSize = 1;
+ break;
+ case MAVLINK_TYPE_INT8_T:
+ fieldSize = 1;
+ break;
+ case MAVLINK_TYPE_UINT16_T:
+ fieldSize = 2;
+ break;
+ case MAVLINK_TYPE_INT16_T:
+ fieldSize = 2;
+ break;
+ case MAVLINK_TYPE_UINT32_T:
+ fieldSize = 4;
+ break;
+ case MAVLINK_TYPE_INT32_T:
+ fieldSize = 4;
+ break;
+ case MAVLINK_TYPE_UINT64_T:
+ fieldSize = 8;
+ break;
+ case MAVLINK_TYPE_INT64_T:
+ fieldSize = 8;
+ break;
+ case MAVLINK_TYPE_FLOAT:
+ fieldSize = 4;
+ break;
+ case MAVLINK_TYPE_DOUBLE:
+ fieldSize = 8;
+ break;
+ default:
+ mavdebug("BAD MAV TYPE %d\n", field_type);
+ set_pyerror("Unexpected mavlink type");
+ fieldSize = 1;
+ }
+
+ return fieldSize;
+}
+
+
+/**
+ * Given a python type character & array_size advance the wire_offset to the correct next value.
+
+ * @return the equivalent C++ type code.
+ */
+static int get_py_typeinfo(char type_char, int array_size, unsigned *wire_offset)
+{
+ int type_code;
+
+ switch(type_char)
+ {
+ case 'f': type_code = MAVLINK_TYPE_FLOAT; break;
+ case 'd': type_code = MAVLINK_TYPE_DOUBLE; break;
+ case 'c': type_code = MAVLINK_TYPE_CHAR; break;
+ case 'v': type_code = MAVLINK_TYPE_UINT8_T; break;
+ case 'b': type_code = MAVLINK_TYPE_INT8_T; break;
+ case 'B': type_code = MAVLINK_TYPE_UINT8_T; break;
+ case 'h': type_code = MAVLINK_TYPE_INT16_T; break;
+ case 'H': type_code = MAVLINK_TYPE_UINT16_T; break;
+ case 'i': type_code = MAVLINK_TYPE_INT32_T; break;
+ case 'I': type_code = MAVLINK_TYPE_UINT32_T; break;
+ case 'q': type_code = MAVLINK_TYPE_INT64_T; break;
+ case 'Q': type_code = MAVLINK_TYPE_UINT64_T; break;
+ default:
+ assert(0);
+ }
+
+ int total_len = get_field_size(type_code) * (array_size == 0 ? 1 : array_size);
+
+ *wire_offset += total_len;
+
+ return type_code;
+}
+
+/**
+ We preconvert message info from the C style representation to python objects (to minimize # of object allocs).
+
+ FIXME - we really should free these PyObjects if our module gets unloaded.
+
+ @param mavlink_map - the mavlink_map object from python a dict from an int msgid -> tuple(fmt, type_class, order_list, len_list, crc_extra)
+*/
+static void init_message_info(PyObject *mavlink_map) {
+ // static const mavlink_message_info_t src[256] = MAVLINK_MESSAGE_INFO;
+
+ PyObject *items_list = PyDict_Values(mavlink_map);
+ assert(items_list); // A list of the tuples in mavlink_map
+
+ Py_ssize_t numMsgs = PyList_Size(items_list);
+
+ int i;
+ for(i = 0; i < numMsgs; i++) {
+ PyObject *type_class = PyList_GetItem(items_list, i); // returns a _borrowed_ reference
+ assert(type_class);
+
+ PyObject *id_obj = PyObject_GetAttrString(type_class, "id"); // A _new_ reference
+ assert(id_obj);
+ PyObject *name_obj = PyObject_GetAttrString(type_class, "name"); // A new reference
+ assert(name_obj);
+ PyObject *crc_extra_obj = PyObject_GetAttrString(type_class, "crc_extra"); // A new reference
+ assert(crc_extra_obj);
+ PyObject *fieldname_list = PyObject_GetAttrString(type_class, "ordered_fieldnames"); // A new reference
+ assert(fieldname_list);
+ //PyObject *order_list = PyObject_GetAttrString(type_class, "orders"); // A new reference
+ //assert(order_list);
+ PyObject *arrlen_list = PyObject_GetAttrString(type_class, "array_lengths"); // A new reference
+ assert(arrlen_list);
+ PyObject *type_format = PyObject_GetAttrString(type_class, "native_format"); // A new reference
+ assert(type_format);
+ char *type_str = PyByteArray_AsString(type_format);
+ assert(type_str);
+
+ Py_ssize_t num_fields = PyList_Size(fieldname_list);
+
+ uint8_t id = (uint8_t) PyInt_AsLong(id_obj);
+ py_message_info_t *d = &py_message_info[id];
+
+ d->id = id_obj;
+ d->name = name_obj;
+ d->num_fields = num_fields;
+ d->crc_extra = PyInt_AsLong(crc_extra_obj);
+ d->fieldnames = PyObject_GetAttrString(type_class, "fieldnames"); // A new reference
+ assert(d->fieldnames);
+
+ int fnum;
+ unsigned wire_offset = 0;
+ for(fnum = 0; fnum < num_fields; fnum++) {
+ PyObject *field_name_obj = PyList_GetItem(fieldname_list, fnum); // returns a _borrowed_ reference
+ assert(field_name_obj);
+ Py_INCREF(field_name_obj);
+
+ PyObject *len_obj = PyList_GetItem(arrlen_list, fnum); // returns a _borrowed_ reference
+ assert(len_obj);
+
+ d->fields[fnum].name = field_name_obj;
+ d->fields[fnum].array_length = PyInt_AsLong(len_obj);
+ char type_char = type_str[1 + fnum];
+ d->fields[fnum].wire_offset = wire_offset; // Store the current offset before advancing
+ d->fields[fnum].type = get_py_typeinfo(type_char, d->fields[fnum].array_length, &wire_offset);
+ }
+ d->len = wire_offset;
+
+ Py_DECREF(crc_extra_obj);
+ Py_DECREF(arrlen_list);
+ Py_DECREF(type_format);
+ //Py_DECREF(order_list);
+ }
+
+ Py_DECREF(items_list);
+}
+
+static PyObject *createPyNone(void)
+{
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+
+/**
+ Set an attribute, but handing over ownership on the value
+*/
+static void set_attribute(PyObject *obj, const char *attrName, PyObject *val) {
+ assert(val);
+ PyObject_SetAttrString(obj, attrName, val);
+ Py_DECREF(val);
+}
+
+
+
+/**
+ Extract a field value from a mavlink msg
+
+ @return possibly null if mavlink stream is corrupted (FIXME, caller should check)
+*/
+static PyObject *pyextract_mavlink(const mavlink_message_t *msg, const py_field_info_t *field) {
+ unsigned offset = field->wire_offset;
+ int index;
+
+ // For arrays of chars we build the result in a string instead of an array
+ PyObject *arrayResult = (field->array_length != 0 && field->type != MAVLINK_TYPE_CHAR) ? PyList_New(field->array_length) : NULL;
+ PyObject *stringResult = (field->array_length != 0 && field->type == MAVLINK_TYPE_CHAR) ? PyByteString_FromString("") : NULL;
+ PyObject *result = NULL;
+
+ int numValues = (field->array_length == 0) ? 1 : field->array_length;
+ unsigned fieldSize = get_field_size(field->type);
+
+ uint8_t string_ended = FALSE;
+
+ if(arrayResult != NULL)
+ result = arrayResult;
+
+ // Either build a full array of results, or return a single value
+ for(index = 0; index < numValues; index++) {
+ PyObject *val = NULL;
+
+ switch(field->type) {
+ case MAVLINK_TYPE_CHAR: {
+ // If we are building a string, stop writing when we see a null char
+ char c = _MAV_RETURN_char(msg, offset);
+
+ if(stringResult && c == 0)
+ string_ended = TRUE;
+
+ val = PyByteString_FromStringAndSize(&c, 1);
+ break;
+ }
+ case MAVLINK_TYPE_UINT8_T:
+ val = PyInt_FromLong(_MAV_RETURN_uint8_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_INT8_T:
+ val = PyInt_FromLong(_MAV_RETURN_int8_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_UINT16_T:
+ val = PyInt_FromLong(_MAV_RETURN_uint16_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_INT16_T:
+ val = PyInt_FromLong(_MAV_RETURN_int16_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_UINT32_T:
+ val = PyLong_FromLong(_MAV_RETURN_uint32_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_INT32_T:
+ val = PyInt_FromLong(_MAV_RETURN_int32_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_UINT64_T:
+ val = PyLong_FromLongLong(_MAV_RETURN_uint64_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_INT64_T:
+ val = PyLong_FromLongLong(_MAV_RETURN_int64_t(msg, offset));
+ break;
+ case MAVLINK_TYPE_FLOAT:
+ val = PyFloat_FromDouble(_MAV_RETURN_float(msg, offset));
+ break;
+ case MAVLINK_TYPE_DOUBLE:
+ val = PyFloat_FromDouble(_MAV_RETURN_double(msg, offset));
+ break;
+ default:
+ mavdebug("BAD MAV TYPE %d\n", field->type);
+ set_pyerror("Unexpected mavlink type");
+ return NULL;
+ }
+ offset += fieldSize;
+
+ assert(val);
+ if(arrayResult != NULL)
+ PyList_SetItem(arrayResult, index, val);
+ else if(stringResult != NULL) {
+ if(!string_ended)
+ PyByteString_ConcatAndDel(&stringResult, val);
+ else
+ Py_DECREF(val); // We didn't use this char
+
+ result = stringResult;
+ }
+ else // Not building an array
+ result = val;
+ }
+
+ assert(result);
+ return result;
+}
+
+
+/**
+ Convert a message to a valid python representation.
+
+ @return new message, or null if a valid encoding could not be made
+
+ FIXME - move msgclass, the mavstatus and channel context into an instance, created once with the mavfile object
+ */
+static PyObject *msg_to_py(PyObject* msgclass, const py_message_t *pymsg) {
+ const mavlink_message_t *msg = &pymsg->msg;
+ const py_message_info_t *info = &py_message_info[msg->msgid];
+
+ mavdebug("Found a msg: %s\n", PyString_AS_STRING(info->name));
+
+ /* Call the class object to create our instance */
+ // PyObject *obj = PyObject_CallObject((PyObject *) &NativeConnectionType, null);
+ PyObject *argList = PyTuple_Pack(2, info->id, info->name);
+ PyObject *obj = PyObject_CallObject(msgclass, argList);
+ uint8_t objValid = TRUE;
+ assert(obj);
+ Py_DECREF(argList);
+
+ // Find the header subobject
+ PyObject *header = PyObject_GetAttrString(obj, "_header");
+ assert(header);
+
+ // msgid already set in the constructor call
+ set_attribute(header, "mlen", PyInt_FromLong(msg->len));
+ set_attribute(header, "seq", PyInt_FromLong(msg->seq));
+ set_attribute(header, "srcSystem", PyInt_FromLong(msg->sysid));
+ set_attribute(header, "srcComponent", PyInt_FromLong(msg->compid));
+ Py_DECREF(header);
+ header = NULL;
+
+ // FIXME - we should generate this expensive field only as needed (via a getattr override)
+ set_attribute(obj, "_msgbuf", PyByteArray_FromStringAndSize((const char *) pymsg->bytes, pymsg->numBytes));
+
+ // Now add all the fields - FIXME - do this lazily using getattr overrides
+ PyObject_SetAttrString(obj, "_fieldnames", info->fieldnames); // Will increment the reference count
+
+ // FIXME - reuse the fieldnames list from python - so it is in the right order
+
+ int fnum;
+ for(fnum = 0; fnum < info->num_fields && objValid; fnum++) {
+ const py_field_info_t *f = &info->fields[fnum];
+ PyObject *val = pyextract_mavlink(msg, f);
+
+ if(val != NULL) {
+ PyObject_SetAttr(obj, f->name, val);
+ Py_DECREF(val); // We no longer need val, the attribute will keep a ref
+ }
+ else
+ objValid = FALSE;
+ }
+
+ if(objValid)
+ return obj;
+ else {
+ Py_DECREF(obj);
+ return NULL;
+ }
+}
+
+
+/**
+ * How many bytes would we like to read to complete current packet
+ */
+static int get_expectedlength(NativeConnection *self)
+{
+ int desired;
+
+ mavlink_message_t *msg = &self->msg.msg;
+
+ switch(self->mav_status.parse_state) {
+ case MAVLINK_PARSE_STATE_UNINIT:
+ case MAVLINK_PARSE_STATE_IDLE:
+ desired = 8;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_STX:
+ desired = 7;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_LENGTH:
+ desired = msg->len + 6;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_SEQ:
+ desired = msg->len + 5;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_SYSID:
+ desired = msg->len + 4;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_COMPID:
+ desired = msg->len + 3;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_MSGID:
+ desired = msg->len - self->mav_status.packet_idx + 2;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_PAYLOAD:
+ desired = 2;
+ break;
+ case MAVLINK_PARSE_STATE_GOT_CRC1:
+ desired = 1;
+ break;
+ default:
+ // Huh? Just claim 1
+ desired = 1;
+ break;
+ }
+
+ mavdebug("in state %d, expected_length=%d\n", (int) self->mav_status.parse_state, desired);
+ return desired;
+}
+
+
+static PyObject *NativeConnection_getexpectedlength(NativeConnection *self, void *closure)
+{
+ return PyInt_FromLong(get_expectedlength(self));
+}
+
+/**
+ Given a byte array of bytes
+ @return a list of MAVProxy_message objects
+*/
+static PyObject *
+py_parse_chars(NativeConnection *self, PyObject *args)
+{
+ PYTHON_ENTRY
+
+ PyObject* byteObj;
+ if (!PyArg_ParseTuple(args, "O", &byteObj)) {
+ set_pyerror("Invalid arguments");
+ return NULL;
+ }
+
+ assert(PyByteArray_Check(byteObj));
+ Py_ssize_t numBytes = PyByteArray_Size(byteObj);
+ mavdebug("numbytes %u\n", (unsigned) numBytes);
+
+ char *start = PyByteArray_AsString(byteObj);
+ assert(start);
+ char *bytes = start;
+ PyObject *result = NULL;
+
+ // Generate a list of messages found
+ while(numBytes) {
+ char c = *bytes++;
+ numBytes--;
+ get_expectedlength(self); mavdebug("parse 0x%x\n", (unsigned char) c);
+
+ if (py_mavlink_parse_char(c, &self->msg, &self->mav_status)) {
+ mavdebug("got packet\n");
+ result = msg_to_py(self->MAVLinkMessage, &self->msg);
+ if(result != NULL)
+ break;
+ }
+ }
+
+ // We didn't process all bytes provided by the caller, so fixup their array
+ memmove(start, bytes, numBytes);
+ PyByteArray_Resize(byteObj, numBytes);
+
+ if(result != NULL)
+ return result;
+ else
+ return createPyNone();
+
+ PYTHON_EXIT
+}
+
+/**
+ Given an string of bytes.
+
+ This routine is more efficient than parse_chars, because it doesn't need to buffer characters.
+
+ @return a list of MAVProxy_message objects
+*/
+static PyObject *
+py_parse_buffer(NativeConnection *self, PyObject *args)
+{
+ PYTHON_ENTRY
+
+ mavdebug("Enter py_parse_buffer\n");
+
+ const char *bytes;
+ Py_ssize_t numBytes = 0;
+
+ if (!PyArg_ParseTuple(args, "s#", &bytes, &numBytes)) {
+ set_pyerror("Invalid arguments");
+ return NULL;
+ }
+
+ // mavdebug("numbytes %u\n", (unsigned) numBytes);
+
+ PyObject* list = PyList_New(0);
+
+ // Generate a list of messages found
+ while(numBytes--) {
+ char c = *bytes++;
+ // mavdebug("parse %c\n", c);
+
+ if (py_mavlink_parse_char(c, &self->msg, &self->mav_status)) {
+ PyObject *obj = msg_to_py(self->MAVLinkMessage, &self->msg);
+ if(obj != NULL) {
+ PyList_Append(list, obj);
+
+ // Append will have bummped up the ref count on obj, so we need to release our count
+ Py_DECREF(obj);
+ }
+ }
+ }
+
+ return list;
+
+ PYTHON_EXIT
+}
+
+static PyObject *
+NativeConnection_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ NativeConnection *self = (NativeConnection *)type->tp_alloc(type, 0);
+
+ mavdebug("new connection\n");
+ return (PyObject *)self;
+}
+
+
+static int
+NativeConnection_init(NativeConnection *self, PyObject *args, PyObject *kwds)
+{
+ PYTHON_ENTRY
+
+ mavdebug("Enter init\n");
+
+ memset(&self->mav_status, 0, sizeof(self->mav_status));
+
+ PyObject* msgclass, *mavlink_map;
+ if (!PyArg_ParseTuple(args, "OO", &msgclass, &mavlink_map)) {
+ set_pyerror("Invalid arguments");
+ return -1;
+ }
+
+ // keep a ref to our mavlink instance constructor
+ assert(msgclass);
+ self->MAVLinkMessage = msgclass;
+ Py_INCREF(msgclass);
+
+ assert(mavlink_map);
+ if(!info_inited) {
+ init_message_info(mavlink_map);
+ info_inited = TRUE;
+ }
+
+ mavdebug("inited connection\n");
+ return 0;
+
+ PYTHON_EXIT_INT
+}
+
+static void NativeConnection_dealloc(NativeConnection* self)
+{
+ Py_XDECREF(self->MAVLinkMessage);
+ Py_TYPE(self)->tp_free((PyObject*)self);
+}
+
+static PyMemberDef NativeConnection_members[] = {
+ {NULL} /* Sentinel */
+};
+
+static PyGetSetDef NativeConnection_getseters[] = {
+ {"expected_length",
+ (getter)NativeConnection_getexpectedlength, NULL,
+ "How many characters would the state-machine like to read now",
+ NULL},
+ {NULL} /* Sentinel */
+};
+
+static PyMethodDef NativeConnection_methods[] = {
+ {"parse_chars", (PyCFunction) py_parse_chars, METH_VARARGS,
+ "Given a msg class and an array of bytes, Parse chars, returning a message or None"},
+ {"parse_buffer", (PyCFunction) py_parse_buffer, METH_VARARGS,
+ "Given a msg class and a string like object, Parse chars, returning a (possibly empty) list of messages"},
+ {NULL, NULL},
+};
+
+// FIXME - delete this?
+static PyTypeObject NativeConnectionType = {
+#if PY_MAJOR_VERSION >= 3
+ PyVarObject_HEAD_INIT(NULL, 0)
+#else
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+#endif
+ "mavnative.NativeConnection", /* tp_name */
+ sizeof(NativeConnection), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ (destructor)NativeConnection_dealloc, /* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_compare */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT |
+ Py_TPFLAGS_BASETYPE, /* tp_flags */
+ "NativeConnection objects", /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ NativeConnection_methods, /* tp_methods */
+ NativeConnection_members, /* tp_members */
+ NativeConnection_getseters, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ (initproc)NativeConnection_init, /* tp_init */
+ 0, /* tp_alloc */
+ NativeConnection_new, /* tp_new */
+};
+
+#if PY_MAJOR_VERSION >= 3
+#define MOD_RETURN(m) return m
+#else
+#define MOD_RETURN(m) return
+#endif
+
+PyMODINIT_FUNC
+#if PY_MAJOR_VERSION >= 3
+ PyInit_mavnative(void)
+#else
+ initmavnative(void)
+#endif
+{
+ if (PyType_Ready(&NativeConnectionType) < 0)
+ MOD_RETURN(NULL);
+
+#if PY_MAJOR_VERSION < 3
+ static PyMethodDef ModuleMethods[] = {
+ {NULL, NULL, 0, NULL} /* Sentinel */
+ };
+
+ PyObject *m = Py_InitModule3("mavnative", ModuleMethods, "Mavnative module");
+ if (m == NULL)
+ MOD_RETURN(m);
+#else
+ static PyModuleDef mod_def = {
+ PyModuleDef_HEAD_INIT,
+ "mavnative",
+ "EMavnative module",
+ -1,
+ NULL, NULL, NULL, NULL, NULL
+ };
+
+ PyObject *m = PyModule_Create(&mod_def);
+#endif
+
+ MAVNativeError = PyErr_NewException("mavnative.error", NULL, NULL);
+ Py_INCREF(MAVNativeError);
+ PyModule_AddObject(m, "error", MAVNativeError);
+
+ Py_INCREF(&NativeConnectionType);
+ PyModule_AddObject(m, "NativeConnection", (PyObject *) &NativeConnectionType);
+ MOD_RETURN(m);
+}
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavparm.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavparm.py
new file mode 100644
index 000000000..9a95622bc
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavparm.py
@@ -0,0 +1,125 @@
+'''
+module for loading/saving sets of mavlink parameters
+'''
+
+import fnmatch, math, time
+
+class MAVParmDict(dict):
+ def __init__(self, *args):
+ dict.__init__(self, args)
+ # some parameters should not be loaded from files
+ self.exclude_load = ['SYSID_SW_MREV', 'SYS_NUM_RESETS', 'ARSPD_OFFSET', 'GND_ABS_PRESS',
+ 'GND_TEMP', 'CMD_TOTAL', 'CMD_INDEX', 'LOG_LASTFILE', 'FENCE_TOTAL',
+ 'FORMAT_VERSION' ]
+ self.mindelta = 0.000001
+
+
+ def mavset(self, mav, name, value, retries=3):
+ '''set a parameter on a mavlink connection'''
+ got_ack = False
+ while retries > 0 and not got_ack:
+ retries -= 1
+ mav.param_set_send(name.upper(), float(value))
+ tstart = time.time()
+ while time.time() - tstart < 1:
+ ack = mav.recv_match(type='PARAM_VALUE', blocking=False)
+ if ack == None:
+ time.sleep(0.1)
+ continue
+ if str(name).upper() == str(ack.param_id).upper():
+ got_ack = True
+ self.__setitem__(name, float(value))
+ break
+ if not got_ack:
+ print("timeout setting %s to %f" % (name, float(value)))
+ return False
+ return True
+
+
+ def save(self, filename, wildcard='*', verbose=False):
+ '''save parameters to a file'''
+ f = open(filename, mode='w')
+ k = list(self.keys())
+ k.sort()
+ count = 0
+ for p in k:
+ if p and fnmatch.fnmatch(str(p).upper(), wildcard.upper()):
+ f.write("%-16.16s %f\n" % (p, self.__getitem__(p)))
+ count += 1
+ f.close()
+ if verbose:
+ print("Saved %u parameters to %s" % (count, filename))
+
+
+ def load(self, filename, wildcard='*', mav=None, check=True):
+ '''load parameters from a file'''
+ try:
+ f = open(filename, mode='r')
+ except:
+ print("Failed to open file '%s'" % filename)
+ return False
+ count = 0
+ changed = 0
+ for line in f:
+ line = line.strip()
+ if not line or line[0] == "#":
+ continue
+ line = line.replace(',',' ')
+ a = line.split()
+ if len(a) != 2:
+ print("Invalid line: %s" % line)
+ continue
+ # some parameters should not be loaded from files
+ if a[0] in self.exclude_load:
+ continue
+ if not fnmatch.fnmatch(a[0].upper(), wildcard.upper()):
+ continue
+ if mav is not None:
+ if check:
+ if a[0] not in self.keys():
+ print("Unknown parameter %s" % a[0])
+ continue
+ old_value = self.__getitem__(a[0])
+ if math.fabs(old_value - float(a[1])) <= self.mindelta:
+ count += 1
+ continue
+ if self.mavset(mav, a[0], a[1]):
+ print("changed %s from %f to %f" % (a[0], old_value, float(a[1])))
+ else:
+ print("set %s to %f" % (a[0], float(a[1])))
+ self.mavset(mav, a[0], a[1])
+ changed += 1
+ else:
+ self.__setitem__(a[0], float(a[1]))
+ count += 1
+ f.close()
+ if mav is not None:
+ print("Loaded %u parameters from %s (changed %u)" % (count, filename, changed))
+ else:
+ print("Loaded %u parameters from %s" % (count, filename))
+ return True
+
+ def show(self, wildcard='*'):
+ '''show parameters'''
+ k = sorted(self.keys())
+ for p in k:
+ if fnmatch.fnmatch(str(p).upper(), wildcard.upper()):
+ print("%-16.16s %f" % (str(p), self.get(p)))
+
+ def diff(self, filename, wildcard='*'):
+ '''show differences with another parameter file'''
+ other = MAVParmDict()
+ if not other.load(filename):
+ return
+ keys = sorted(list(set(self.keys()).union(set(other.keys()))))
+ for k in keys:
+ if not fnmatch.fnmatch(str(k).upper(), wildcard.upper()):
+ continue
+ if not k in other:
+ print("%-16.16s %12.4f" % (k, self[k]))
+ elif not k in self:
+ print("%-16.16s %12.4f" % (k, other[k]))
+ elif abs(self[k] - other[k]) > self.mindelta:
+ print("%-16.16s %12.4f %12.4f" % (k, other[k], self[k]))
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavutil.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavutil.py
new file mode 100644
index 000000000..56d13344c
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavutil.py
@@ -0,0 +1,1782 @@
+#!/usr/bin/env python
+'''
+mavlink python utility functions
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+'''
+
+import socket, math, struct, time, os, fnmatch, array, sys, errno
+import select
+from pymavlink import mavexpression
+
+# adding these extra imports allows pymavlink to be used directly with pyinstaller
+# without having complex spec files. To allow for installs that don't have ardupilotmega
+# at all we avoid throwing an exception if it isn't installed
+try:
+ import json
+ from pymavlink.dialects.v10 import ardupilotmega
+except Exception:
+ pass
+
+# maximum packet length for a single receive call - use the UDP limit
+UDP_MAX_PACKET_LEN = 65535
+
+# Store the MAVLink library for the currently-selected dialect
+# (set by set_dialect())
+mavlink = None
+
+# Store the mavlink file currently being operated on
+# (set by mavlink_connection())
+mavfile_global = None
+
+# If the caller hasn't specified a particular native/legacy version, use this
+default_native = False
+
+# link_id used for signing
+global_link_id = 0
+
+# Use a globally-set MAVLink dialect if one has been specified as an environment variable.
+if not 'MAVLINK_DIALECT' in os.environ:
+ os.environ['MAVLINK_DIALECT'] = 'ardupilotmega'
+
+def mavlink10():
+ '''return True if using MAVLink 1.0 or later'''
+ return not 'MAVLINK09' in os.environ
+
+def mavlink20():
+ '''return True if using MAVLink 2.0'''
+ return 'MAVLINK20' in os.environ
+
+def evaluate_expression(expression, vars):
+ '''evaluation an expression'''
+ return mavexpression.evaluate_expression(expression, vars)
+
+def evaluate_condition(condition, vars):
+ '''evaluation a conditional (boolean) statement'''
+ if condition is None:
+ return True
+ v = evaluate_expression(condition, vars)
+ if v is None:
+ return False
+ return v
+
+class location(object):
+ '''represent a GPS coordinate'''
+ def __init__(self, lat, lng, alt=0, heading=0):
+ self.lat = lat
+ self.lng = lng
+ self.alt = alt
+ self.heading = heading
+
+ def __str__(self):
+ return "lat=%.6f,lon=%.6f,alt=%.1f" % (self.lat, self.lng, self.alt)
+
+def set_dialect(dialect):
+ '''set the MAVLink dialect to work with.
+ For example, set_dialect("ardupilotmega")
+ '''
+ global mavlink, current_dialect
+ from .generator import mavparse
+ if 'MAVLINK20' in os.environ:
+ wire_protocol = mavparse.PROTOCOL_2_0
+ modname = "pymavlink.dialects.v20." + dialect
+ elif mavlink is None or mavlink.WIRE_PROTOCOL_VERSION == "1.0" or not 'MAVLINK09' in os.environ:
+ wire_protocol = mavparse.PROTOCOL_1_0
+ modname = "pymavlink.dialects.v10." + dialect
+ else:
+ wire_protocol = mavparse.PROTOCOL_0_9
+ modname = "pymavlink.dialects.v09." + dialect
+
+ try:
+ mod = __import__(modname)
+ except Exception:
+ # auto-generate the dialect module
+ from .generator.mavgen import mavgen_python_dialect
+ mavgen_python_dialect(dialect, wire_protocol)
+ mod = __import__(modname)
+ components = modname.split('.')
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ current_dialect = dialect
+ mavlink = mod
+
+# Set the default dialect. This is done here as it needs to be after the function declaration
+set_dialect(os.environ['MAVLINK_DIALECT'])
+
+class mavfile(object):
+ '''a generic mavlink port'''
+ def __init__(self, fd, address, source_system=255, notimestamps=False, input=True, use_native=default_native):
+ global mavfile_global
+ if input:
+ mavfile_global = self
+ self.fd = fd
+ self.address = address
+ self.messages = { 'MAV' : self }
+ if float(mavlink.WIRE_PROTOCOL_VERSION) >= 1:
+ self.messages['HOME'] = mavlink.MAVLink_gps_raw_int_message(0,0,0,0,0,0,0,0,0,0)
+ mavlink.MAVLink_waypoint_message = mavlink.MAVLink_mission_item_message
+ else:
+ self.messages['HOME'] = mavlink.MAVLink_gps_raw_message(0,0,0,0,0,0,0,0,0)
+ self.params = {}
+ self.target_system = 0
+ self.target_component = 0
+ self.source_system = source_system
+ self.first_byte = True
+ self.robust_parsing = True
+ self.mav = mavlink.MAVLink(self, srcSystem=self.source_system, use_native=use_native)
+ self.mav.robust_parsing = self.robust_parsing
+ self.logfile = None
+ self.logfile_raw = None
+ self.param_fetch_in_progress = False
+ self.param_fetch_complete = False
+ self.start_time = time.time()
+ self.flightmode = "UNKNOWN"
+ self.vehicle_type = "UNKNOWN"
+ self.mav_type = mavlink.MAV_TYPE_FIXED_WING
+ self.base_mode = 0
+ self.timestamp = 0
+ self.message_hooks = []
+ self.idle_hooks = []
+ self.uptime = 0.0
+ self.notimestamps = notimestamps
+ self._timestamp = None
+ self.ground_pressure = None
+ self.ground_temperature = None
+ self.altitude = 0
+ self.WIRE_PROTOCOL_VERSION = mavlink.WIRE_PROTOCOL_VERSION
+ self.last_seq = {}
+ self.mav_loss = 0
+ self.mav_count = 0
+ self.stop_on_EOF = False
+ self.portdead = False
+
+ def auto_mavlink_version(self, buf):
+ '''auto-switch mavlink protocol version'''
+ global mavlink
+ if len(buf) == 0:
+ return
+ try:
+ magic = ord(buf[0])
+ except:
+ magic = buf[0]
+ if not magic in [ 85, 254, 253 ]:
+ return
+ self.first_byte = False
+ if self.WIRE_PROTOCOL_VERSION == "0.9" and magic == 254:
+ self.WIRE_PROTOCOL_VERSION = "1.0"
+ set_dialect(current_dialect)
+ elif self.WIRE_PROTOCOL_VERSION == "1.0" and magic == 85:
+ self.WIRE_PROTOCOL_VERSION = "0.9"
+ os.environ['MAVLINK09'] = '1'
+ set_dialect(current_dialect)
+ elif self.WIRE_PROTOCOL_VERSION != "2.0" and magic == 253:
+ self.WIRE_PROTOCOL_VERSION = "2.0"
+ os.environ['MAVLINK20'] = '1'
+ set_dialect(current_dialect)
+ else:
+ return
+ # switch protocol
+ (callback, callback_args, callback_kwargs) = (self.mav.callback,
+ self.mav.callback_args,
+ self.mav.callback_kwargs)
+ self.mav = mavlink.MAVLink(self, srcSystem=self.source_system)
+ self.mav.robust_parsing = self.robust_parsing
+ self.WIRE_PROTOCOL_VERSION = mavlink.WIRE_PROTOCOL_VERSION
+ (self.mav.callback, self.mav.callback_args, self.mav.callback_kwargs) = (callback,
+ callback_args,
+ callback_kwargs)
+
+ def recv(self, n=None):
+ '''default recv method'''
+ raise RuntimeError('no recv() method supplied')
+
+ def close(self, n=None):
+ '''default close method'''
+ raise RuntimeError('no close() method supplied')
+
+ def write(self, buf):
+ '''default write method'''
+ raise RuntimeError('no write() method supplied')
+
+
+ def select(self, timeout):
+ '''wait for up to timeout seconds for more data'''
+ if self.fd is None:
+ time.sleep(min(timeout,0.5))
+ return True
+ try:
+ (rin, win, xin) = select.select([self.fd], [], [], timeout)
+ except select.error:
+ return False
+ return len(rin) == 1
+
+ def pre_message(self):
+ '''default pre message call'''
+ return
+
+ def set_rtscts(self, enable):
+ '''enable/disable RTS/CTS if applicable'''
+ return
+
+ def post_message(self, msg):
+ '''default post message call'''
+ if '_posted' in msg.__dict__:
+ return
+ msg._posted = True
+ msg._timestamp = time.time()
+ type = msg.get_type()
+ if type != 'HEARTBEAT' or (msg.type != mavlink.MAV_TYPE_GCS and msg.type != mavlink.MAV_TYPE_GIMBAL):
+ self.messages[type] = msg
+
+ if 'usec' in msg.__dict__:
+ self.uptime = msg.usec * 1.0e-6
+ if 'time_boot_ms' in msg.__dict__:
+ self.uptime = msg.time_boot_ms * 1.0e-3
+
+ if self._timestamp is not None:
+ if self.notimestamps:
+ msg._timestamp = self.uptime
+ else:
+ msg._timestamp = self._timestamp
+
+ src_system = msg.get_srcSystem()
+ src_component = msg.get_srcComponent()
+ src_tuple = (src_system, src_component)
+ radio_tuple = (ord('3'), ord('D'))
+ if not (src_tuple == radio_tuple or msg.get_type() == 'BAD_DATA'):
+ if not src_tuple in self.last_seq:
+ last_seq = -1
+ else:
+ last_seq = self.last_seq[src_tuple]
+ seq = (last_seq+1) % 256
+ seq2 = msg.get_seq()
+ if seq != seq2 and last_seq != -1:
+ diff = (seq2 - seq) % 256
+ self.mav_loss += diff
+ #print("lost %u seq=%u seq2=%u last_seq=%u src_system=%u %s" % (diff, seq, seq2, last_seq, src_system, msg.get_type()))
+ self.last_seq[src_tuple] = seq2
+ self.mav_count += 1
+
+ self.timestamp = msg._timestamp
+ if type == 'HEARTBEAT' and msg.get_srcComponent() != mavlink.MAV_COMP_ID_GIMBAL:
+ self.target_system = msg.get_srcSystem()
+ self.target_component = msg.get_srcComponent()
+ if float(mavlink.WIRE_PROTOCOL_VERSION) >= 1 and msg.type != mavlink.MAV_TYPE_GCS:
+ self.flightmode = mode_string_v10(msg)
+ self.mav_type = msg.type
+ self.base_mode = msg.base_mode
+ elif type == 'PARAM_VALUE':
+ s = str(msg.param_id)
+ self.params[str(msg.param_id)] = msg.param_value
+ if msg.param_index+1 == msg.param_count:
+ self.param_fetch_in_progress = False
+ self.param_fetch_complete = True
+ elif type == 'SYS_STATUS' and mavlink.WIRE_PROTOCOL_VERSION == '0.9':
+ self.flightmode = mode_string_v09(msg)
+ elif type == 'GPS_RAW':
+ if self.messages['HOME'].fix_type < 2:
+ self.messages['HOME'] = msg
+ elif type == 'GPS_RAW_INT':
+ if self.messages['HOME'].fix_type < 3:
+ self.messages['HOME'] = msg
+ for hook in self.message_hooks:
+ hook(self, msg)
+
+ if (msg.get_signed() and
+ self.mav.signing.link_id == 0 and
+ msg.get_link_id() != 0 and
+ self.target_system == msg.get_srcSystem() and
+ self.target_component == msg.get_srcComponent()):
+ # change to link_id from incoming packet
+ self.mav.signing.link_id = msg.get_link_id()
+
+
+ def packet_loss(self):
+ '''packet loss as a percentage'''
+ if self.mav_count == 0:
+ return 0
+ return (100.0*self.mav_loss)/(self.mav_count+self.mav_loss)
+
+
+ def recv_msg(self):
+ '''message receive routine'''
+ self.pre_message()
+ while True:
+ n = self.mav.bytes_needed()
+ s = self.recv(n)
+ numnew = len(s)
+
+ if numnew != 0:
+ if self.logfile_raw:
+ self.logfile_raw.write(str(s))
+ if self.first_byte:
+ self.auto_mavlink_version(s)
+
+ # We always call parse_char even if the new string is empty, because the existing message buf might already have some valid packet
+ # we can extract
+ msg = self.mav.parse_char(s)
+ if msg:
+ if self.logfile and msg.get_type() != 'BAD_DATA' :
+ usec = int(time.time() * 1.0e6) & ~3
+ self.logfile.write(str(struct.pack('>Q', usec) + msg.get_msgbuf()))
+ self.post_message(msg)
+ return msg
+ else:
+ # if we failed to parse any messages _and_ no new bytes arrived, return immediately so the client has the option to
+ # timeout
+ if numnew == 0:
+ return None
+
+ def recv_match(self, condition=None, type=None, blocking=False, timeout=None):
+ '''recv the next MAVLink message that matches the given condition
+ type can be a string or a list of strings'''
+ if type is not None and not isinstance(type, list):
+ type = [type]
+ start_time = time.time()
+ while True:
+ if timeout is not None:
+ now = time.time()
+ if now < start_time:
+ start_time = now # If an external process rolls back system time, we should not spin forever.
+ if start_time + timeout < time.time():
+ return None
+ m = self.recv_msg()
+ if m is None:
+ if blocking:
+ for hook in self.idle_hooks:
+ hook(self)
+ if timeout is None:
+ self.select(0.05)
+ else:
+ self.select(timeout/2)
+ continue
+ return None
+ if type is not None and not m.get_type() in type:
+ continue
+ if not evaluate_condition(condition, self.messages):
+ continue
+ return m
+
+ def check_condition(self, condition):
+ '''check if a condition is true'''
+ return evaluate_condition(condition, self.messages)
+
+ def mavlink10(self):
+ '''return True if using MAVLink 1.0 or later'''
+ return float(self.WIRE_PROTOCOL_VERSION) >= 1
+
+ def mavlink20(self):
+ '''return True if using MAVLink 2.0 or later'''
+ return float(self.WIRE_PROTOCOL_VERSION) >= 2
+
+ def setup_logfile(self, logfile, mode='w'):
+ '''start logging to the given logfile, with timestamps'''
+ self.logfile = open(logfile, mode=mode)
+
+ def setup_logfile_raw(self, logfile, mode='w'):
+ '''start logging raw bytes to the given logfile, without timestamps'''
+ self.logfile_raw = open(logfile, mode=mode)
+
+ def wait_heartbeat(self, blocking=True):
+ '''wait for a heartbeat so we know the target system IDs'''
+ return self.recv_match(type='HEARTBEAT', blocking=blocking)
+
+ def param_fetch_all(self):
+ '''initiate fetch of all parameters'''
+ if time.time() - getattr(self, 'param_fetch_start', 0) < 2.0:
+ # don't fetch too often
+ return
+ self.param_fetch_start = time.time()
+ self.param_fetch_in_progress = True
+ self.mav.param_request_list_send(self.target_system, self.target_component)
+
+ def param_fetch_one(self, name):
+ '''initiate fetch of one parameter'''
+ try:
+ idx = int(name)
+ self.mav.param_request_read_send(self.target_system, self.target_component, "", idx)
+ except Exception:
+ self.mav.param_request_read_send(self.target_system, self.target_component, name, -1)
+
+ def time_since(self, mtype):
+ '''return the time since the last message of type mtype was received'''
+ if not mtype in self.messages:
+ return time.time() - self.start_time
+ return time.time() - self.messages[mtype]._timestamp
+
+ def param_set_send(self, parm_name, parm_value, parm_type=None):
+ '''wrapper for parameter set'''
+ if self.mavlink10():
+ if parm_type == None:
+ parm_type = mavlink.MAVLINK_TYPE_FLOAT
+ self.mav.param_set_send(self.target_system, self.target_component,
+ parm_name, parm_value, parm_type)
+ else:
+ self.mav.param_set_send(self.target_system, self.target_component,
+ parm_name, parm_value)
+
+ def waypoint_request_list_send(self):
+ '''wrapper for waypoint_request_list_send'''
+ if self.mavlink10():
+ self.mav.mission_request_list_send(self.target_system, self.target_component)
+ else:
+ self.mav.waypoint_request_list_send(self.target_system, self.target_component)
+
+ def waypoint_clear_all_send(self):
+ '''wrapper for waypoint_clear_all_send'''
+ if self.mavlink10():
+ self.mav.mission_clear_all_send(self.target_system, self.target_component)
+ else:
+ self.mav.waypoint_clear_all_send(self.target_system, self.target_component)
+
+ def waypoint_request_send(self, seq):
+ '''wrapper for waypoint_request_send'''
+ if self.mavlink10():
+ self.mav.mission_request_send(self.target_system, self.target_component, seq)
+ else:
+ self.mav.waypoint_request_send(self.target_system, self.target_component, seq)
+
+ def waypoint_set_current_send(self, seq):
+ '''wrapper for waypoint_set_current_send'''
+ if self.mavlink10():
+ self.mav.mission_set_current_send(self.target_system, self.target_component, seq)
+ else:
+ self.mav.waypoint_set_current_send(self.target_system, self.target_component, seq)
+
+ def waypoint_current(self):
+ '''return current waypoint'''
+ if self.mavlink10():
+ m = self.recv_match(type='MISSION_CURRENT', blocking=True)
+ else:
+ m = self.recv_match(type='WAYPOINT_CURRENT', blocking=True)
+ return m.seq
+
+ def waypoint_count_send(self, seq):
+ '''wrapper for waypoint_count_send'''
+ if self.mavlink10():
+ self.mav.mission_count_send(self.target_system, self.target_component, seq)
+ else:
+ self.mav.waypoint_count_send(self.target_system, self.target_component, seq)
+
+ def set_mode_flag(self, flag, enable):
+ '''
+ Enables/ disables MAV_MODE_FLAG
+ @param flag The mode flag,
+ see MAV_MODE_FLAG enum
+ @param enable Enable the flag, (True/False)
+ '''
+ if self.mavlink10():
+ mode = self.base_mode
+ if (enable == True):
+ mode = mode | flag
+ elif (enable == False):
+ mode = mode & ~flag
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_DO_SET_MODE, 0,
+ mode,
+ 0, 0, 0, 0, 0, 0)
+ else:
+ print("Set mode flag not supported")
+
+ def set_mode_auto(self):
+ '''enter auto mode'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_MISSION_START, 0, 0, 0, 0, 0, 0, 0, 0)
+ else:
+ MAV_ACTION_SET_AUTO = 13
+ self.mav.action_send(self.target_system, self.target_component, MAV_ACTION_SET_AUTO)
+
+ def mode_mapping(self):
+ '''return dictionary mapping mode names to numbers, or None if unknown'''
+ mav_type = self.field('HEARTBEAT', 'type', self.mav_type)
+ mav_autopilot = self.field('HEARTBEAT', 'autopilot', None)
+ if mav_autopilot == mavlink.MAV_AUTOPILOT_PX4:
+ return px4_map
+ if mav_type is None:
+ return None
+ map = None
+ if mav_type in [mavlink.MAV_TYPE_QUADROTOR,
+ mavlink.MAV_TYPE_HELICOPTER,
+ mavlink.MAV_TYPE_HEXAROTOR,
+ mavlink.MAV_TYPE_OCTOROTOR,
+ mavlink.MAV_TYPE_COAXIAL,
+ mavlink.MAV_TYPE_TRICOPTER]:
+ map = mode_mapping_acm
+ if mav_type == mavlink.MAV_TYPE_FIXED_WING:
+ map = mode_mapping_apm
+ if mav_type == mavlink.MAV_TYPE_GROUND_ROVER:
+ map = mode_mapping_rover
+ if mav_type == mavlink.MAV_TYPE_ANTENNA_TRACKER:
+ map = mode_mapping_tracker
+ if map is None:
+ return None
+ inv_map = dict((a, b) for (b, a) in list(map.items()))
+ return inv_map
+
+ def set_mode_apm(self, mode, custom_mode = 0, custom_sub_mode = 0):
+ '''enter arbitrary mode'''
+ if isinstance(mode, str):
+ mode_map = self.mode_mapping()
+ if mode_map is None or mode not in mode_map:
+ print("Unknown mode '%s'" % mode)
+ return
+ mode = mode_map[mode]
+ # set mode by integer mode number for ArduPilot
+ self.mav.set_mode_send(self.target_system,
+ mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED,
+ mode)
+
+ def set_mode_px4(self, mode, custom_mode, custom_sub_mode):
+ '''enter arbitrary mode'''
+ if isinstance(mode, str):
+ mode_map = self.mode_mapping()
+ if mode_map is None or mode not in mode_map:
+ print("Unknown mode '%s'" % mode)
+ return
+ # PX4 uses two fields to define modes
+ mode, custom_mode, custom_sub_mode = px4_map[mode]
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_DO_SET_MODE, 0, mode, custom_mode, custom_sub_mode, 0, 0, 0, 0)
+
+ def set_mode(self, mode, custom_mode = 0, custom_sub_mode = 0):
+ '''set arbitrary flight mode'''
+ mav_autopilot = self.field('HEARTBEAT', 'autopilot', None)
+ if mav_autopilot == mavlink.MAV_AUTOPILOT_PX4:
+ self.set_mode_px4(mode, custom_mode, custom_sub_mode)
+ else:
+ self.set_mode_apm(mode)
+
+ def set_mode_rtl(self):
+ '''enter RTL mode'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH, 0, 0, 0, 0, 0, 0, 0, 0)
+ else:
+ MAV_ACTION_RETURN = 3
+ self.mav.action_send(self.target_system, self.target_component, MAV_ACTION_RETURN)
+
+ def set_mode_manual(self):
+ '''enter MANUAL mode'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_DO_SET_MODE, 0,
+ mavlink.MAV_MODE_MANUAL_ARMED,
+ 0, 0, 0, 0, 0, 0)
+ else:
+ MAV_ACTION_SET_MANUAL = 12
+ self.mav.action_send(self.target_system, self.target_component, MAV_ACTION_SET_MANUAL)
+
+ def set_mode_fbwa(self):
+ '''enter FBWA mode'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_DO_SET_MODE, 0,
+ mavlink.MAV_MODE_STABILIZE_ARMED,
+ 0, 0, 0, 0, 0, 0)
+ else:
+ print("Forcing FBWA not supported")
+
+ def set_mode_loiter(self):
+ '''enter LOITER mode'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_NAV_LOITER_UNLIM, 0, 0, 0, 0, 0, 0, 0, 0)
+ else:
+ MAV_ACTION_LOITER = 27
+ self.mav.action_send(self.target_system, self.target_component, MAV_ACTION_LOITER)
+
+ def set_servo(self, channel, pwm):
+ '''set a servo value'''
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_DO_SET_SERVO, 0,
+ channel, pwm,
+ 0, 0, 0, 0, 0)
+
+
+ def set_relay(self, relay_pin=0, state=True):
+ '''Set relay_pin to value of state'''
+ if self.mavlink10():
+ self.mav.command_long_send(
+ self.target_system, # target_system
+ self.target_component, # target_component
+ mavlink.MAV_CMD_DO_SET_RELAY, # command
+ 0, # Confirmation
+ relay_pin, # Relay Number
+ int(state), # state (1 to indicate arm)
+ 0, # param3 (all other params meaningless)
+ 0, # param4
+ 0, # param5
+ 0, # param6
+ 0) # param7
+ else:
+ print("Setting relays not supported.")
+
+ def calibrate_level(self):
+ '''calibrate accels (1D version)'''
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_PREFLIGHT_CALIBRATION, 0,
+ 1, 1, 0, 0, 0, 0, 0)
+
+ def calibrate_pressure(self):
+ '''calibrate pressure'''
+ if self.mavlink10():
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_PREFLIGHT_CALIBRATION, 0,
+ 0, 0, 1, 0, 0, 0, 0)
+ else:
+ MAV_ACTION_CALIBRATE_PRESSURE = 20
+ self.mav.action_send(self.target_system, self.target_component, MAV_ACTION_CALIBRATE_PRESSURE)
+
+ def reboot_autopilot(self, hold_in_bootloader=False):
+ '''reboot the autopilot'''
+ if self.mavlink10():
+ if hold_in_bootloader:
+ param1 = 3
+ else:
+ param1 = 1
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 0,
+ param1, 0, 0, 0, 0, 0, 0)
+ # send an old style reboot immediately afterwards in case it is an older firmware
+ # that doesn't understand the new convention
+ self.mav.command_long_send(self.target_system, self.target_component,
+ mavlink.MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 0,
+ 1, 0, 0, 0, 0, 0, 0)
+
+ def wait_gps_fix(self):
+ self.recv_match(type='VFR_HUD', blocking=True)
+ if self.mavlink10():
+ self.recv_match(type='GPS_RAW_INT', blocking=True,
+ condition='GPS_RAW_INT.fix_type==3 and GPS_RAW_INT.lat != 0 and GPS_RAW_INT.alt != 0')
+ else:
+ self.recv_match(type='GPS_RAW', blocking=True,
+ condition='GPS_RAW.fix_type==2 and GPS_RAW.lat != 0 and GPS_RAW.alt != 0')
+
+ def location(self, relative_alt=False):
+ '''return current location'''
+ self.wait_gps_fix()
+ # wait for another VFR_HUD, to ensure we have correct altitude
+ self.recv_match(type='VFR_HUD', blocking=True)
+ self.recv_match(type='GLOBAL_POSITION_INT', blocking=True)
+ if relative_alt:
+ alt = self.messages['GLOBAL_POSITION_INT'].relative_alt*0.001
+ else:
+ alt = self.messages['VFR_HUD'].alt
+ return location(self.messages['GPS_RAW_INT'].lat*1.0e-7,
+ self.messages['GPS_RAW_INT'].lon*1.0e-7,
+ alt,
+ self.messages['VFR_HUD'].heading)
+
+ def arducopter_arm(self):
+ '''arm motors (arducopter only)'''
+ if self.mavlink10():
+ self.mav.command_long_send(
+ self.target_system, # target_system
+ self.target_component,
+ mavlink.MAV_CMD_COMPONENT_ARM_DISARM, # command
+ 0, # confirmation
+ 1, # param1 (1 to indicate arm)
+ 0, # param2 (all other params meaningless)
+ 0, # param3
+ 0, # param4
+ 0, # param5
+ 0, # param6
+ 0) # param7
+
+ def arducopter_disarm(self):
+ '''calibrate pressure'''
+ if self.mavlink10():
+ self.mav.command_long_send(
+ self.target_system, # target_system
+ self.target_component,
+ mavlink.MAV_CMD_COMPONENT_ARM_DISARM, # command
+ 0, # confirmation
+ 0, # param1 (0 to indicate disarm)
+ 0, # param2 (all other params meaningless)
+ 0, # param3
+ 0, # param4
+ 0, # param5
+ 0, # param6
+ 0) # param7
+
+ def motors_armed(self):
+ '''return true if motors armed'''
+ if not 'HEARTBEAT' in self.messages:
+ return False
+ m = self.messages['HEARTBEAT']
+ return (m.base_mode & mavlink.MAV_MODE_FLAG_SAFETY_ARMED) != 0
+
+ def motors_armed_wait(self):
+ '''wait for motors to be armed'''
+ while True:
+ m = self.wait_heartbeat()
+ if self.motors_armed():
+ return
+
+ def motors_disarmed_wait(self):
+ '''wait for motors to be disarmed'''
+ while True:
+ m = self.wait_heartbeat()
+ if not self.motors_armed():
+ return
+
+
+ def field(self, type, field, default=None):
+ '''convenient function for returning an arbitrary MAVLink
+ field with a default'''
+ if not type in self.messages:
+ return default
+ return getattr(self.messages[type], field, default)
+
+ def param(self, name, default=None):
+ '''convenient function for returning an arbitrary MAVLink
+ parameter with a default'''
+ if not name in self.params:
+ return default
+ return self.params[name]
+
+ def setup_signing(self, secret_key, sign_outgoing=True, allow_unsigned_callback=None, initial_timestamp=None, link_id=None):
+ '''setup for MAVLink2 signing'''
+ self.mav.signing.secret_key = secret_key
+ self.mav.signing.sign_outgoing = sign_outgoing
+ self.mav.signing.allow_unsigned_callback = allow_unsigned_callback
+ if link_id is None:
+ # auto-increment the link_id for each link
+ global global_link_id
+ link_id = global_link_id
+ global_link_id = min(global_link_id + 1, 255)
+ self.mav.signing.link_id = link_id
+ if initial_timestamp is None:
+ # timestamp is time since 1/1/2015
+ epoch_offset = 1420070400
+ now = max(time.time(), epoch_offset)
+ initial_timestamp = now - epoch_offset
+ initial_timestamp = int(initial_timestamp * 100 * 1000)
+ # initial_timestamp is in 10usec units
+ self.mav.signing.timestamp = initial_timestamp
+
+ def disable_signing(self):
+ '''disable MAVLink2 signing'''
+ self.mav.signing.secret_key = None
+ self.mav.signing.sign_outgoing = False
+ self.mav.signing.allow_unsigned_callback = None
+ self.mav.signing.link_id = 0
+ self.mav.signing.timestamp = 0
+
+def set_close_on_exec(fd):
+ '''set the clone on exec flag on a file descriptor. Ignore exceptions'''
+ try:
+ import fcntl
+ flags = fcntl.fcntl(fd, fcntl.F_GETFD)
+ flags |= fcntl.FD_CLOEXEC
+ fcntl.fcntl(fd, fcntl.F_SETFD, flags)
+ except Exception:
+ pass
+
+class mavserial(mavfile):
+ '''a serial mavlink port'''
+ def __init__(self, device, baud=115200, autoreconnect=False, source_system=255, use_native=default_native):
+ import serial
+ if ',' in device and not os.path.exists(device):
+ device, baud = device.split(',')
+ self.baud = baud
+ self.device = device
+ self.autoreconnect = autoreconnect
+ # we rather strangely set the baudrate initially to 1200, then change to the desired
+ # baudrate. This works around a kernel bug on some Linux kernels where the baudrate
+ # is not set correctly
+ self.port = serial.Serial(self.device, 1200, timeout=0,
+ dsrdtr=False, rtscts=False, xonxoff=False)
+ try:
+ fd = self.port.fileno()
+ set_close_on_exec(fd)
+ except Exception:
+ fd = None
+ self.set_baudrate(self.baud)
+ mavfile.__init__(self, fd, device, source_system=source_system, use_native=use_native)
+ self.rtscts = False
+
+ def set_rtscts(self, enable):
+ '''enable/disable RTS/CTS if applicable'''
+ try:
+ self.port.setRtsCts(enable)
+ except Exception:
+ self.port.rtscts = enable
+ self.rtscts = enable
+
+ def set_baudrate(self, baudrate):
+ '''set baudrate'''
+ try:
+ self.port.setBaudrate(baudrate)
+ except Exception:
+ # for pySerial 3.0, which doesn't have setBaudrate()
+ self.port.baudrate = baudrate
+
+ def close(self):
+ self.port.close()
+
+ def recv(self,n=None):
+ if n is None:
+ n = self.mav.bytes_needed()
+ if self.fd is None:
+ waiting = self.port.inWaiting()
+ if waiting < n:
+ n = waiting
+ ret = self.port.read(n)
+ return ret
+
+ def write(self, buf):
+ try:
+ if not isinstance(buf, str):
+ buf = str(buf)
+ return self.port.write(buf)
+ except Exception:
+ if not self.portdead:
+ print("Device %s is dead" % self.device)
+ self.portdead = True
+ if self.autoreconnect:
+ self.reset()
+ return -1
+
+ def reset(self):
+ import serial
+ try:
+ newport = serial.Serial(self.device, self.baud, timeout=0,
+ dsrdtr=False, rtscts=False, xonxoff=False)
+ self.port.close()
+ self.port = newport
+ print("Device %s reopened OK" % self.device)
+ self.portdead = False
+ try:
+ self.fd = self.port.fileno()
+ except Exception:
+ self.fd = None
+ if self.rtscts:
+ self.set_rtscts(self.rtscts)
+ return True
+ except Exception:
+ return False
+
+
+class mavudp(mavfile):
+ '''a UDP mavlink socket'''
+ def __init__(self, device, input=True, broadcast=False, source_system=255, use_native=default_native):
+ a = device.split(':')
+ if len(a) != 2:
+ print("UDP ports must be specified as host:port")
+ sys.exit(1)
+ self.port = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ self.udp_server = input
+ self.broadcast = False
+ if input:
+ self.port.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ self.port.bind((a[0], int(a[1])))
+ else:
+ self.destination_addr = (a[0], int(a[1]))
+ if broadcast:
+ self.port.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+ self.broadcast = True
+ set_close_on_exec(self.port.fileno())
+ self.port.setblocking(0)
+ self.last_address = None
+ mavfile.__init__(self, self.port.fileno(), device, source_system=source_system, input=input, use_native=use_native)
+
+ def close(self):
+ self.port.close()
+
+ def recv(self,n=None):
+ try:
+ data, new_addr = self.port.recvfrom(UDP_MAX_PACKET_LEN)
+ except socket.error as e:
+ if e.errno in [ errno.EAGAIN, errno.EWOULDBLOCK, errno.ECONNREFUSED ]:
+ return ""
+ raise
+ if self.udp_server or self.broadcast:
+ self.last_address = new_addr
+ return data
+
+ def write(self, buf):
+ try:
+ if self.udp_server:
+ if self.last_address:
+ self.port.sendto(buf, self.last_address)
+ else:
+ if self.last_address and self.broadcast:
+ self.destination_addr = self.last_address
+ self.broadcast = False
+ self.port.connect(self.destination_addr)
+ self.port.sendto(buf, self.destination_addr)
+ except socket.error:
+ pass
+
+ def recv_msg(self):
+ '''message receive routine for UDP link'''
+ self.pre_message()
+ s = self.recv()
+ if len(s) > 0:
+ if self.first_byte:
+ self.auto_mavlink_version(s)
+
+ m = self.mav.parse_char(s)
+ if m is not None:
+ self.post_message(m)
+
+ return m
+
+
+class mavtcp(mavfile):
+ '''a TCP mavlink socket'''
+ def __init__(self, device, source_system=255, retries=3, use_native=default_native):
+ a = device.split(':')
+ if len(a) != 2:
+ print("TCP ports must be specified as host:port")
+ sys.exit(1)
+ self.port = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.destination_addr = (a[0], int(a[1]))
+ while retries >= 0:
+ retries -= 1
+ if retries <= 0:
+ self.port.connect(self.destination_addr)
+ else:
+ try:
+ self.port.connect(self.destination_addr)
+ break
+ except Exception as e:
+ if retries > 0:
+ print(e, "sleeping")
+ time.sleep(1)
+ continue
+ self.port.setblocking(0)
+ set_close_on_exec(self.port.fileno())
+ self.port.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
+ mavfile.__init__(self, self.port.fileno(), "tcp:" + device, source_system=source_system, use_native=use_native)
+
+ def close(self):
+ self.port.close()
+
+ def recv(self,n=None):
+ if n is None:
+ n = self.mav.bytes_needed()
+ try:
+ data = self.port.recv(n)
+ except socket.error as e:
+ if e.errno in [ errno.EAGAIN, errno.EWOULDBLOCK ]:
+ return ""
+ raise
+ return data
+
+ def write(self, buf):
+ try:
+ self.port.send(buf)
+ except socket.error:
+ pass
+
+
+class mavtcpin(mavfile):
+ '''a TCP input mavlink socket'''
+ def __init__(self, device, source_system=255, retries=3, use_native=default_native):
+ a = device.split(':')
+ if len(a) != 2:
+ print("TCP ports must be specified as host:port")
+ sys.exit(1)
+ self.listen = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.listen_addr = (a[0], int(a[1]))
+ self.listen.bind(self.listen_addr)
+ self.listen.listen(1)
+ self.listen.setblocking(0)
+ set_close_on_exec(self.listen.fileno())
+ self.listen.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
+ mavfile.__init__(self, self.listen.fileno(), "tcpin:" + device, source_system=source_system, use_native=use_native)
+ self.port = None
+
+ def close(self):
+ self.listen.close()
+
+ def recv(self,n=None):
+ if not self.port:
+ try:
+ (self.port, addr) = self.listen.accept()
+ except Exception:
+ return ''
+ self.port.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
+ self.port.setblocking(0)
+ set_close_on_exec(self.port.fileno())
+ self.fd = self.port.fileno()
+
+ if n is None:
+ n = self.mav.bytes_needed()
+ try:
+ data = self.port.recv(n)
+ except socket.error as e:
+ if e.errno in [ errno.EAGAIN, errno.EWOULDBLOCK ]:
+ return ""
+ self.port.close()
+ self.port = None
+ self.fd = self.listen.fileno()
+ return ''
+ return data
+
+ def write(self, buf):
+ if self.port is None:
+ return
+ try:
+ self.port.send(buf)
+ except socket.error as e:
+ if e.errno in [ errno.EPIPE ]:
+ self.port.close()
+ self.port = None
+ self.fd = self.listen.fileno()
+ pass
+
+
+class mavlogfile(mavfile):
+ '''a MAVLink logfile reader/writer'''
+ def __init__(self, filename, planner_format=None,
+ write=False, append=False,
+ robust_parsing=True, notimestamps=False, source_system=255, use_native=default_native):
+ self.filename = filename
+ self.writeable = write
+ self.robust_parsing = robust_parsing
+ self.planner_format = planner_format
+ self._two64 = math.pow(2.0, 63)
+ mode = 'rb'
+ if self.writeable:
+ if append:
+ mode = 'ab'
+ else:
+ mode = 'wb'
+ self.f = open(filename, mode)
+ self.filesize = os.path.getsize(filename)
+ self.percent = 0
+ mavfile.__init__(self, None, filename, source_system=source_system, notimestamps=notimestamps, use_native=use_native)
+ if self.notimestamps:
+ self._timestamp = 0
+ else:
+ self._timestamp = time.time()
+ self.stop_on_EOF = True
+ self._last_message = None
+ self._last_timestamp = None
+
+ def close(self):
+ self.f.close()
+
+ def recv(self,n=None):
+ if n is None:
+ n = self.mav.bytes_needed()
+ return self.f.read(n)
+
+ def write(self, buf):
+ self.f.write(buf)
+
+ def scan_timestamp(self, tbuf):
+ '''scan forward looking in a tlog for a timestamp in a reasonable range'''
+ while True:
+ (tusec,) = struct.unpack('>Q', tbuf)
+ t = tusec * 1.0e-6
+ if abs(t - self._last_timestamp) <= 3*24*60*60:
+ break
+ c = self.f.read(1)
+ if len(c) != 1:
+ break
+ tbuf = tbuf[1:] + c
+ return t
+
+
+ def pre_message(self):
+ '''read timestamp if needed'''
+ # read the timestamp
+ if self.filesize != 0:
+ self.percent = (100.0 * self.f.tell()) / self.filesize
+ if self.notimestamps:
+ return
+ if self.planner_format:
+ tbuf = self.f.read(21)
+ if len(tbuf) != 21 or tbuf[0] != '-' or tbuf[20] != ':':
+ raise RuntimeError('bad planner timestamp %s' % tbuf)
+ hnsec = self._two64 + float(tbuf[0:20])
+ t = hnsec * 1.0e-7 # convert to seconds
+ t -= 719163 * 24 * 60 * 60 # convert to 1970 base
+ self._link = 0
+ else:
+ tbuf = self.f.read(8)
+ if len(tbuf) != 8:
+ return
+ (tusec,) = struct.unpack('>Q', tbuf)
+ t = tusec * 1.0e-6
+ if (self._last_timestamp is not None and
+ self._last_message.get_type() == "BAD_DATA" and
+ abs(t - self._last_timestamp) > 3*24*60*60):
+ t = self.scan_timestamp(tbuf)
+ self._link = tusec & 0x3
+ self._timestamp = t
+
+ def post_message(self, msg):
+ '''add timestamp to message'''
+ # read the timestamp
+ super(mavlogfile, self).post_message(msg)
+ if self.planner_format:
+ self.f.read(1) # trailing newline
+ self.timestamp = msg._timestamp
+ self._last_message = msg
+ if msg.get_type() != "BAD_DATA":
+ self._last_timestamp = msg._timestamp
+ msg._link = self._link
+
+
+class mavmemlog(mavfile):
+ '''a MAVLink log in memory. This allows loading a log into
+ memory to make it easier to do multiple sweeps over a log'''
+ def __init__(self, mav):
+ mavfile.__init__(self, None, 'memlog')
+ self._msgs = []
+ self._index = 0
+ self._count = 0
+ self.messages = {}
+ while True:
+ m = mav.recv_msg()
+ if m is None:
+ break
+ self._msgs.append(m)
+ self._count = len(self._msgs)
+
+ def recv_msg(self):
+ '''message receive routine'''
+ if self._index >= self._count:
+ return None
+ m = self._msgs[self._index]
+ self._index += 1
+ self.percent = (100.0 * self._index) / self._count
+ self.messages[m.get_type()] = m
+ return m
+
+ def rewind(self):
+ '''rewind to start'''
+ self._index = 0
+ self.percent = 0
+ self.messages = {}
+
+class mavchildexec(mavfile):
+ '''a MAVLink child processes reader/writer'''
+ def __init__(self, filename, source_system=255, use_native=default_native):
+ from subprocess import Popen, PIPE
+ import fcntl
+
+ self.filename = filename
+ self.child = Popen(filename, shell=False, stdout=PIPE, stdin=PIPE, bufsize=0)
+ self.fd = self.child.stdout.fileno()
+
+ fl = fcntl.fcntl(self.fd, fcntl.F_GETFL)
+ fcntl.fcntl(self.fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
+
+ fl = fcntl.fcntl(self.child.stdout.fileno(), fcntl.F_GETFL)
+ fcntl.fcntl(self.child.stdout.fileno(), fcntl.F_SETFL, fl | os.O_NONBLOCK)
+
+ mavfile.__init__(self, self.fd, filename, source_system=source_system, use_native=use_native)
+
+ def close(self):
+ self.child.close()
+
+ def recv(self,n=None):
+ try:
+ x = self.child.stdout.read(1)
+ except Exception:
+ return ''
+ return x
+
+ def write(self, buf):
+ self.child.stdin.write(buf)
+
+
+def mavlink_connection(device, baud=115200, source_system=255,
+ planner_format=None, write=False, append=False,
+ robust_parsing=True, notimestamps=False, input=True,
+ dialect=None, autoreconnect=False, zero_time_base=False,
+ retries=3, use_native=default_native):
+ '''open a serial, UDP, TCP or file mavlink connection'''
+ global mavfile_global
+
+ if dialect is not None:
+ set_dialect(dialect)
+ if device.startswith('tcp:'):
+ return mavtcp(device[4:], source_system=source_system, retries=retries, use_native=use_native)
+ if device.startswith('tcpin:'):
+ return mavtcpin(device[6:], source_system=source_system, retries=retries, use_native=use_native)
+ if device.startswith('udpin:'):
+ return mavudp(device[6:], input=True, source_system=source_system, use_native=use_native)
+ if device.startswith('udpout:'):
+ return mavudp(device[7:], input=False, source_system=source_system, use_native=use_native)
+ if device.startswith('udpbcast:'):
+ return mavudp(device[9:], input=False, source_system=source_system, use_native=use_native, broadcast=True)
+ # For legacy purposes we accept the following syntax and let the caller to specify direction
+ if device.startswith('udp:'):
+ return mavudp(device[4:], input=input, source_system=source_system, use_native=use_native)
+
+ if device.lower().endswith('.bin') or device.lower().endswith('.px4log'):
+ # support dataflash logs
+ from pymavlink import DFReader
+ m = DFReader.DFReader_binary(device, zero_time_base=zero_time_base)
+ mavfile_global = m
+ return m
+
+ if device.endswith('.log'):
+ # support dataflash text logs
+ from pymavlink import DFReader
+ if DFReader.DFReader_is_text_log(device):
+ m = DFReader.DFReader_text(device, zero_time_base=zero_time_base)
+ mavfile_global = m
+ return m
+
+ # list of suffixes to prevent setting DOS paths as UDP sockets
+ logsuffixes = ['mavlink', 'log', 'raw', 'tlog' ]
+ suffix = device.split('.')[-1].lower()
+ if device.find(':') != -1 and not suffix in logsuffixes:
+ return mavudp(device, source_system=source_system, input=input, use_native=use_native)
+ if os.path.isfile(device):
+ if device.endswith(".elf") or device.find("/bin/") != -1:
+ print("executing '%s'" % device)
+ return mavchildexec(device, source_system=source_system, use_native=use_native)
+ else:
+ return mavlogfile(device, planner_format=planner_format, write=write,
+ append=append, robust_parsing=robust_parsing, notimestamps=notimestamps,
+ source_system=source_system, use_native=use_native)
+ return mavserial(device, baud=baud, source_system=source_system, autoreconnect=autoreconnect, use_native=use_native)
+
+class periodic_event(object):
+ '''a class for fixed frequency events'''
+ def __init__(self, frequency):
+ self.frequency = float(frequency)
+ self.last_time = time.time()
+
+ def force(self):
+ '''force immediate triggering'''
+ self.last_time = 0
+
+ def trigger(self):
+ '''return True if we should trigger now'''
+ tnow = time.time()
+
+ if tnow < self.last_time:
+ print("Warning, time moved backwards. Restarting timer.")
+ self.last_time = tnow
+
+ if self.last_time + (1.0/self.frequency) <= tnow:
+ self.last_time = tnow
+ return True
+ return False
+
+
+try:
+ from curses import ascii
+ have_ascii = True
+except:
+ have_ascii = False
+
+def is_printable(c):
+ '''see if a character is printable'''
+ global have_ascii
+ if have_ascii:
+ return ascii.isprint(c)
+ if isinstance(c, int):
+ ic = c
+ else:
+ ic = ord(c)
+ return ic >= 32 and ic <= 126
+
+def all_printable(buf):
+ '''see if a string is all printable'''
+ for c in buf:
+ if not is_printable(c) and not c in ['\r', '\n', '\t']:
+ return False
+ return True
+
+class SerialPort(object):
+ '''auto-detected serial port'''
+ def __init__(self, device, description=None, hwid=None):
+ self.device = device
+ self.description = description
+ self.hwid = hwid
+
+ def __str__(self):
+ ret = self.device
+ if self.description is not None:
+ ret += " : " + self.description
+ if self.hwid is not None:
+ ret += " : " + self.hwid
+ return ret
+
+def auto_detect_serial_win32(preferred_list=['*']):
+ '''try to auto-detect serial ports on win32'''
+ try:
+ from serial.tools.list_ports_windows import comports
+ list = sorted(comports())
+ except:
+ return []
+ ret = []
+ others = []
+ for port, description, hwid in list:
+ matches = False
+ p = SerialPort(port, description=description, hwid=hwid)
+ for preferred in preferred_list:
+ if fnmatch.fnmatch(description, preferred) or fnmatch.fnmatch(hwid, preferred):
+ matches = True
+ if matches:
+ ret.append(p)
+ else:
+ others.append(p)
+ if len(ret) > 0:
+ return ret
+ # now the rest
+ ret.extend(others)
+ return ret
+
+
+
+
+def auto_detect_serial_unix(preferred_list=['*']):
+ '''try to auto-detect serial ports on unix'''
+ import glob
+ glist = glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob('/dev/serial/by-id/*')
+ ret = []
+ others = []
+ # try preferred ones first
+ for d in glist:
+ matches = False
+ for preferred in preferred_list:
+ if fnmatch.fnmatch(d, preferred):
+ matches = True
+ if matches:
+ ret.append(SerialPort(d))
+ else:
+ others.append(SerialPort(d))
+ if len(ret) > 0:
+ return ret
+ ret.extend(others)
+ return ret
+
+def auto_detect_serial(preferred_list=['*']):
+ '''try to auto-detect serial port'''
+ # see if
+ if os.name == 'nt':
+ return auto_detect_serial_win32(preferred_list=preferred_list)
+ return auto_detect_serial_unix(preferred_list=preferred_list)
+
+def mode_string_v09(msg):
+ '''mode string for 0.9 protocol'''
+ mode = msg.mode
+ nav_mode = msg.nav_mode
+
+ MAV_MODE_UNINIT = 0
+ MAV_MODE_MANUAL = 2
+ MAV_MODE_GUIDED = 3
+ MAV_MODE_AUTO = 4
+ MAV_MODE_TEST1 = 5
+ MAV_MODE_TEST2 = 6
+ MAV_MODE_TEST3 = 7
+
+ MAV_NAV_GROUNDED = 0
+ MAV_NAV_LIFTOFF = 1
+ MAV_NAV_HOLD = 2
+ MAV_NAV_WAYPOINT = 3
+ MAV_NAV_VECTOR = 4
+ MAV_NAV_RETURNING = 5
+ MAV_NAV_LANDING = 6
+ MAV_NAV_LOST = 7
+ MAV_NAV_LOITER = 8
+
+ cmode = (mode, nav_mode)
+ mapping = {
+ (MAV_MODE_UNINIT, MAV_NAV_GROUNDED) : "INITIALISING",
+ (MAV_MODE_MANUAL, MAV_NAV_VECTOR) : "MANUAL",
+ (MAV_MODE_TEST3, MAV_NAV_VECTOR) : "CIRCLE",
+ (MAV_MODE_GUIDED, MAV_NAV_VECTOR) : "GUIDED",
+ (MAV_MODE_TEST1, MAV_NAV_VECTOR) : "STABILIZE",
+ (MAV_MODE_TEST2, MAV_NAV_LIFTOFF) : "FBWA",
+ (MAV_MODE_AUTO, MAV_NAV_WAYPOINT) : "AUTO",
+ (MAV_MODE_AUTO, MAV_NAV_RETURNING) : "RTL",
+ (MAV_MODE_AUTO, MAV_NAV_LOITER) : "LOITER",
+ (MAV_MODE_AUTO, MAV_NAV_LIFTOFF) : "TAKEOFF",
+ (MAV_MODE_AUTO, MAV_NAV_LANDING) : "LANDING",
+ (MAV_MODE_AUTO, MAV_NAV_HOLD) : "LOITER",
+ (MAV_MODE_GUIDED, MAV_NAV_VECTOR) : "GUIDED",
+ (MAV_MODE_GUIDED, MAV_NAV_WAYPOINT) : "GUIDED",
+ (100, MAV_NAV_VECTOR) : "STABILIZE",
+ (101, MAV_NAV_VECTOR) : "ACRO",
+ (102, MAV_NAV_VECTOR) : "ALT_HOLD",
+ (107, MAV_NAV_VECTOR) : "CIRCLE",
+ (109, MAV_NAV_VECTOR) : "LAND",
+ }
+ if cmode in mapping:
+ return mapping[cmode]
+ return "Mode(%s,%s)" % cmode
+
+mode_mapping_apm = {
+ 0 : 'MANUAL',
+ 1 : 'CIRCLE',
+ 2 : 'STABILIZE',
+ 3 : 'TRAINING',
+ 4 : 'ACRO',
+ 5 : 'FBWA',
+ 6 : 'FBWB',
+ 7 : 'CRUISE',
+ 8 : 'AUTOTUNE',
+ 10 : 'AUTO',
+ 11 : 'RTL',
+ 12 : 'LOITER',
+ 14 : 'LAND',
+ 15 : 'GUIDED',
+ 16 : 'INITIALISING',
+ 17 : 'QSTABILIZE',
+ 18 : 'QHOVER',
+ 19 : 'QLOITER',
+ 20 : 'QLAND',
+ 21 : 'QRTL',
+ }
+mode_mapping_acm = {
+ 0 : 'STABILIZE',
+ 1 : 'ACRO',
+ 2 : 'ALT_HOLD',
+ 3 : 'AUTO',
+ 4 : 'GUIDED',
+ 5 : 'LOITER',
+ 6 : 'RTL',
+ 7 : 'CIRCLE',
+ 8 : 'POSITION',
+ 9 : 'LAND',
+ 10 : 'OF_LOITER',
+ 11 : 'DRIFT',
+ 13 : 'SPORT',
+ 14 : 'FLIP',
+ 15 : 'AUTOTUNE',
+ 16 : 'POSHOLD',
+ 17 : 'BRAKE',
+ 18 : 'THROW',
+ 19 : 'AVOID_ADSB',
+ }
+mode_mapping_rover = {
+ 0 : 'MANUAL',
+ 2 : 'LEARNING',
+ 3 : 'STEERING',
+ 4 : 'HOLD',
+ 10 : 'AUTO',
+ 11 : 'RTL',
+ 15 : 'GUIDED',
+ 16 : 'INITIALISING'
+ }
+
+mode_mapping_tracker = {
+ 0 : 'MANUAL',
+ 1 : 'STOP',
+ 2 : 'SCAN',
+ 10 : 'AUTO',
+ 16 : 'INITIALISING'
+ }
+
+# map from a PX4 "main_state" to a string; see msg/commander_state.msg
+# This allows us to map sdlog STAT.MainState to a simple "mode"
+# string, used in DFReader and possibly other places. These are
+# related but distict from what is found in mavlink messages; see
+# "Custom mode definitions", below.
+mainstate_mapping_px4 = {
+ 0 : 'MANUAL',
+ 1 : 'ALTCTL',
+ 2 : 'POSCTL',
+ 3 : 'AUTO_MISSION',
+ 4 : 'AUTO_LOITER',
+ 5 : 'AUTO_RTL',
+ 6 : 'ACRO',
+ 7 : 'OFFBOARD',
+ 8 : 'STAB',
+ 9 : 'RATTITUDE',
+ 10 : 'AUTO_TAKEOFF',
+ 11 : 'AUTO_LAND',
+ 12 : 'AUTO_FOLLOW_TARGET',
+ 13 : 'MAX',
+}
+def mode_string_px4(MainState):
+ return mainstate_mapping_px4.get(MainState, "Unknown")
+
+
+# Custom mode definitions from PX4
+PX4_CUSTOM_MAIN_MODE_MANUAL = 1
+PX4_CUSTOM_MAIN_MODE_ALTCTL = 2
+PX4_CUSTOM_MAIN_MODE_POSCTL = 3
+PX4_CUSTOM_MAIN_MODE_AUTO = 4
+PX4_CUSTOM_MAIN_MODE_ACRO = 5
+PX4_CUSTOM_MAIN_MODE_OFFBOARD = 6
+PX4_CUSTOM_MAIN_MODE_STABILIZED = 7
+PX4_CUSTOM_MAIN_MODE_RATTITUDE = 8
+
+PX4_CUSTOM_SUB_MODE_AUTO_READY = 1
+PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF = 2
+PX4_CUSTOM_SUB_MODE_AUTO_LOITER = 3
+PX4_CUSTOM_SUB_MODE_AUTO_MISSION = 4
+PX4_CUSTOM_SUB_MODE_AUTO_RTL = 5
+PX4_CUSTOM_SUB_MODE_AUTO_LAND = 6
+PX4_CUSTOM_SUB_MODE_AUTO_RTGS = 7
+PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET = 8
+
+auto_mode_flags = mavlink.MAV_MODE_FLAG_AUTO_ENABLED \
+ | mavlink.MAV_MODE_FLAG_STABILIZE_ENABLED \
+ | mavlink.MAV_MODE_FLAG_GUIDED_ENABLED
+
+px4_map = { "MANUAL": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_STABILIZE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_MANUAL, 0 ),
+ "STABILIZED": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_STABILIZE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_STABILIZED, 0 ),
+ "ACRO": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_ACRO, 0 ),
+ "RATTITUDE": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_RATTITUDE, 0 ),
+ "ALTCTL": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_STABILIZE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_ALTCTL, 0 ),
+ "POSCTL": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | mavlink.MAV_MODE_FLAG_STABILIZE_ENABLED | mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, PX4_CUSTOM_MAIN_MODE_POSCTL, 0 ),
+ "LOITER": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | auto_mode_flags, PX4_CUSTOM_MAIN_MODE_AUTO, PX4_CUSTOM_SUB_MODE_AUTO_LOITER ),
+ "MISSION": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | auto_mode_flags, PX4_CUSTOM_MAIN_MODE_AUTO, PX4_CUSTOM_SUB_MODE_AUTO_MISSION ),
+ "RTL": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | auto_mode_flags, PX4_CUSTOM_MAIN_MODE_AUTO, PX4_CUSTOM_SUB_MODE_AUTO_RTL ),
+ "FOLLOWME": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | auto_mode_flags, PX4_CUSTOM_MAIN_MODE_AUTO, PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET ),
+ "OFFBOARD": (mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | auto_mode_flags, PX4_CUSTOM_MAIN_MODE_OFFBOARD, 0 )}
+
+
+def interpret_px4_mode(base_mode, custom_mode):
+ custom_main_mode = (custom_mode & 0xFF0000) >> 16
+ custom_sub_mode = (custom_mode & 0xFF000000) >> 24
+
+ if base_mode & mavlink.MAV_MODE_FLAG_MANUAL_INPUT_ENABLED != 0: #manual modes
+ if custom_main_mode == PX4_CUSTOM_MAIN_MODE_MANUAL:
+ return "MANUAL"
+ elif custom_main_mode == PX4_CUSTOM_MAIN_MODE_ACRO:
+ return "ACRO"
+ elif custom_main_mode == PX4_CUSTOM_MAIN_MODE_RATTITUDE:
+ return "RATTITUDE"
+ elif custom_main_mode == PX4_CUSTOM_MAIN_MODE_STABILIZED:
+ return "STABILIZED"
+ elif custom_main_mode == PX4_CUSTOM_MAIN_MODE_ALTCTL:
+ return "ALTCTL"
+ elif custom_main_mode == PX4_CUSTOM_MAIN_MODE_POSCTL:
+ return "POSCTL"
+ elif (base_mode & auto_mode_flags) == auto_mode_flags: #auto modes
+ if custom_main_mode & PX4_CUSTOM_MAIN_MODE_AUTO != 0:
+ if custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_MISSION:
+ return "TAKEOFF"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF:
+ return "MISSION"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_LOITER:
+ return "LOITER"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET:
+ return "FOLLOWME"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_RTL:
+ return "RTL"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_LAND:
+ return "LAND"
+ elif custom_sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_RTGS:
+ return "RTGS"
+ elif custom_sub_mode == PX4_CUSTOM_MAIN_MODE_OFFBOARD:
+ return "OFFBOARD"
+ return "UNKNOWN"
+
+def mode_mapping_byname(mav_type):
+ '''return dictionary mapping mode names to numbers, or None if unknown'''
+ map = None
+ if mav_type in [mavlink.MAV_TYPE_QUADROTOR,
+ mavlink.MAV_TYPE_HELICOPTER,
+ mavlink.MAV_TYPE_HEXAROTOR,
+ mavlink.MAV_TYPE_OCTOROTOR,
+ mavlink.MAV_TYPE_COAXIAL,
+ mavlink.MAV_TYPE_TRICOPTER]:
+ map = mode_mapping_acm
+ if mav_type == mavlink.MAV_TYPE_FIXED_WING:
+ map = mode_mapping_apm
+ if mav_type == mavlink.MAV_TYPE_GROUND_ROVER:
+ map = mode_mapping_rover
+ if mav_type == mavlink.MAV_TYPE_ANTENNA_TRACKER:
+ map = mode_mapping_tracker
+ if map is None:
+ return None
+ inv_map = dict((a, b) for (b, a) in map.items())
+ return inv_map
+
+def mode_mapping_bynumber(mav_type):
+ '''return dictionary mapping mode numbers to name, or None if unknown'''
+ map = None
+ if mav_type in [mavlink.MAV_TYPE_QUADROTOR,
+ mavlink.MAV_TYPE_HELICOPTER,
+ mavlink.MAV_TYPE_HEXAROTOR,
+ mavlink.MAV_TYPE_OCTOROTOR,
+ mavlink.MAV_TYPE_COAXIAL,
+ mavlink.MAV_TYPE_TRICOPTER]:
+ map = mode_mapping_acm
+ if mav_type == mavlink.MAV_TYPE_FIXED_WING:
+ map = mode_mapping_apm
+ if mav_type == mavlink.MAV_TYPE_GROUND_ROVER:
+ map = mode_mapping_rover
+ if mav_type == mavlink.MAV_TYPE_ANTENNA_TRACKER:
+ map = mode_mapping_tracker
+ if map is None:
+ return None
+ return map
+
+
+def mode_string_v10(msg):
+ '''mode string for 1.0 protocol, from heartbeat'''
+ if msg.autopilot == mavlink.MAV_AUTOPILOT_PX4:
+ return interpret_px4_mode(msg.base_mode, msg.custom_mode)
+ if not msg.base_mode & mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED:
+ return "Mode(0x%08x)" % msg.base_mode
+ if msg.type in [ mavlink.MAV_TYPE_QUADROTOR, mavlink.MAV_TYPE_HEXAROTOR,
+ mavlink.MAV_TYPE_OCTOROTOR, mavlink.MAV_TYPE_TRICOPTER,
+ mavlink.MAV_TYPE_COAXIAL,
+ mavlink.MAV_TYPE_HELICOPTER ]:
+ if msg.custom_mode in mode_mapping_acm:
+ return mode_mapping_acm[msg.custom_mode]
+ if msg.type == mavlink.MAV_TYPE_FIXED_WING:
+ if msg.custom_mode in mode_mapping_apm:
+ return mode_mapping_apm[msg.custom_mode]
+ if msg.type == mavlink.MAV_TYPE_GROUND_ROVER:
+ if msg.custom_mode in mode_mapping_rover:
+ return mode_mapping_rover[msg.custom_mode]
+ if msg.type == mavlink.MAV_TYPE_ANTENNA_TRACKER:
+ if msg.custom_mode in mode_mapping_tracker:
+ return mode_mapping_tracker[msg.custom_mode]
+ return "Mode(%u)" % msg.custom_mode
+
+def mode_string_apm(mode_number):
+ '''return mode string for APM:Plane'''
+ if mode_number in mode_mapping_apm:
+ return mode_mapping_apm[mode_number]
+ return "Mode(%u)" % mode_number
+
+def mode_string_acm(mode_number):
+ '''return mode string for APM:Copter'''
+ if mode_number in mode_mapping_acm:
+ return mode_mapping_acm[mode_number]
+ return "Mode(%u)" % mode_number
+
+class x25crc(object):
+ '''x25 CRC - based on checksum.h from mavlink library'''
+ def __init__(self, buf=''):
+ self.crc = 0xffff
+ self.accumulate(buf)
+
+ def accumulate(self, buf):
+ '''add in some more bytes'''
+ bytes = array.array('B')
+ if isinstance(buf, array.array):
+ bytes.extend(buf)
+ else:
+ bytes.fromstring(buf)
+ accum = self.crc
+ for b in bytes:
+ tmp = b ^ (accum & 0xff)
+ tmp = (tmp ^ (tmp<<4)) & 0xFF
+ accum = (accum>>8) ^ (tmp<<8) ^ (tmp<<3) ^ (tmp>>4)
+ accum = accum & 0xFFFF
+ self.crc = accum
+
+class MavlinkSerialPort():
+ '''an object that looks like a serial port, but
+ transmits using mavlink SERIAL_CONTROL packets'''
+ def __init__(self, portname, baudrate, devnum=0, devbaud=0, timeout=3, debug=0):
+ from . import mavutil
+
+ self.baudrate = 0
+ self.timeout = timeout
+ self._debug = debug
+ self.buf = ''
+ self.port = devnum
+ self.debug("Connecting with MAVLink to %s ..." % portname)
+ self.mav = mavutil.mavlink_connection(portname, autoreconnect=True, baud=baudrate)
+ self.mav.wait_heartbeat()
+ self.debug("HEARTBEAT OK\n")
+ if devbaud != 0:
+ self.setBaudrate(devbaud)
+ self.debug("Locked serial device\n")
+
+ def debug(self, s, level=1):
+ '''write some debug text'''
+ if self._debug >= level:
+ print(s)
+
+ def write(self, b):
+ '''write some bytes'''
+ from . import mavutil
+ self.debug("sending '%s' (0x%02x) of len %u\n" % (b, ord(b[0]), len(b)), 2)
+ while len(b) > 0:
+ n = len(b)
+ if n > 70:
+ n = 70
+ buf = [ord(x) for x in b[:n]]
+ buf.extend([0]*(70-len(buf)))
+ self.mav.mav.serial_control_send(self.port,
+ mavutil.mavlink.SERIAL_CONTROL_FLAG_EXCLUSIVE |
+ mavutil.mavlink.SERIAL_CONTROL_FLAG_RESPOND,
+ 0,
+ 0,
+ n,
+ buf)
+ b = b[n:]
+
+ def _recv(self):
+ '''read some bytes into self.buf'''
+ from . import mavutil
+ start_time = time.time()
+ while time.time() < start_time + self.timeout:
+ m = self.mav.recv_match(condition='SERIAL_CONTROL.count!=0',
+ type='SERIAL_CONTROL', blocking=False, timeout=0)
+ if m is not None and m.count != 0:
+ break
+ self.mav.mav.serial_control_send(self.port,
+ mavutil.mavlink.SERIAL_CONTROL_FLAG_EXCLUSIVE |
+ mavutil.mavlink.SERIAL_CONTROL_FLAG_RESPOND,
+ 0,
+ 0,
+ 0, [0]*70)
+ m = self.mav.recv_match(condition='SERIAL_CONTROL.count!=0',
+ type='SERIAL_CONTROL', blocking=True, timeout=0.01)
+ if m is not None and m.count != 0:
+ break
+ if m is not None:
+ if self._debug > 2:
+ print(m)
+ data = m.data[:m.count]
+ self.buf += ''.join(str(chr(x)) for x in data)
+
+ def read(self, n):
+ '''read some bytes'''
+ if len(self.buf) == 0:
+ self._recv()
+ if len(self.buf) > 0:
+ if n > len(self.buf):
+ n = len(self.buf)
+ ret = self.buf[:n]
+ self.buf = self.buf[n:]
+ if self._debug >= 2:
+ for b in ret:
+ self.debug("read 0x%x" % ord(b), 2)
+ return ret
+ return ''
+
+ def flushInput(self):
+ '''flush any pending input'''
+ self.buf = ''
+ saved_timeout = self.timeout
+ self.timeout = 0.5
+ self._recv()
+ self.timeout = saved_timeout
+ self.buf = ''
+ self.debug("flushInput")
+
+ def setBaudrate(self, baudrate):
+ '''set baudrate'''
+ from . import mavutil
+ if self.baudrate == baudrate:
+ return
+ self.baudrate = baudrate
+ self.mav.mav.serial_control_send(self.port,
+ mavutil.mavlink.SERIAL_CONTROL_FLAG_EXCLUSIVE,
+ 0,
+ self.baudrate,
+ 0, [0]*70)
+ self.flushInput()
+ self.debug("Changed baudrate %u" % self.baudrate)
+
+if __name__ == '__main__':
+ serial_list = auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*'])
+ for port in serial_list:
+ print("%s" % port)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavwp.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavwp.py
new file mode 100644
index 000000000..7d3b56670
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/mavwp.py
@@ -0,0 +1,604 @@
+'''
+module for loading/saving waypoints
+'''
+
+import time, copy
+import logging
+from . import mavutil
+try:
+ from google.protobuf import text_format
+ import mission_pb2
+ HAVE_PROTOBUF = True
+except ImportError:
+ HAVE_PROTOBUF = False
+
+
+class MAVWPError(Exception):
+ '''MAVLink WP error class'''
+ def __init__(self, msg):
+ Exception.__init__(self, msg)
+ self.message = msg
+
+
+class MAVWPLoader(object):
+ '''MAVLink waypoint loader'''
+ def __init__(self, target_system=0, target_component=0):
+ self.wpoints = []
+ self.target_system = target_system
+ self.target_component = target_component
+ self.last_change = time.time()
+
+ def count(self):
+ '''return number of waypoints'''
+ return len(self.wpoints)
+
+ def wp(self, i):
+ '''return a waypoint'''
+ try:
+ the_wp = self.wpoints[i]
+ except:
+ the_wp = None
+
+ return the_wp
+
+ def wp_is_loiter(self, i):
+ '''return true if waypoint is a loiter waypoint'''
+ loiter_cmds = [mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM,
+ mavutil.mavlink.MAV_CMD_NAV_LOITER_TURNS,
+ mavutil.mavlink.MAV_CMD_NAV_LOITER_TIME,
+ mavutil.mavlink.MAV_CMD_NAV_LOITER_TO_ALT]
+
+ if (self.wpoints[i].command in loiter_cmds):
+ return True
+
+ return False
+
+ def add(self, w, comment=''):
+ '''add a waypoint'''
+ w = copy.copy(w)
+ if comment:
+ w.comment = comment
+ w.seq = self.count()
+ self.wpoints.append(w)
+ self.last_change = time.time()
+
+ def insert(self, idx, w, comment=''):
+ '''insert a waypoint'''
+ if idx >= self.count():
+ self.add(w, comment)
+ return
+ if idx < 0:
+ return
+ w = copy.copy(w)
+ if comment:
+ w.comment = comment
+ w.seq = idx
+ self.wpoints.insert(idx, w)
+ self.last_change = time.time()
+ self.reindex()
+
+ def reindex(self):
+ '''reindex waypoints'''
+ for i in range(self.count()):
+ w = self.wpoints[i]
+ w.seq = i
+ self.last_change = time.time()
+
+ def add_latlonalt(self, lat, lon, altitude, terrain_alt=False):
+ '''add a point via latitude/longitude/altitude'''
+ if terrain_alt:
+ frame = mavutil.mavlink.MAV_FRAME_GLOBAL_TERRAIN_ALT
+ else:
+ frame = mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT
+ p = mavutil.mavlink.MAVLink_mission_item_message(self.target_system,
+ self.target_component,
+ 0,
+ frame,
+ mavutil.mavlink.MAV_CMD_NAV_WAYPOINT,
+ 0, 0, 0, 0, 0, 0,
+ lat, lon, altitude)
+ self.add(p)
+
+ def set(self, w, idx):
+ '''set a waypoint'''
+ w.seq = idx
+ if w.seq == self.count():
+ return self.add(w)
+ if self.count() <= idx:
+ raise MAVWPError('adding waypoint at idx=%u past end of list (count=%u)' % (idx, self.count()))
+ self.wpoints[idx] = w
+ self.last_change = time.time()
+
+ def remove(self, w):
+ '''remove a waypoint'''
+ self.wpoints.remove(w)
+ self.last_change = time.time()
+ self.reindex()
+
+ def clear(self):
+ '''clear waypoint list'''
+ self.wpoints = []
+ self.last_change = time.time()
+
+ def _read_waypoints_v100(self, file):
+ '''read a version 100 waypoint'''
+ cmdmap = {
+ 2 : mavutil.mavlink.MAV_CMD_NAV_TAKEOFF,
+ 3 : mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH,
+ 4 : mavutil.mavlink.MAV_CMD_NAV_LAND,
+ 24: mavutil.mavlink.MAV_CMD_NAV_TAKEOFF,
+ 26: mavutil.mavlink.MAV_CMD_NAV_LAND,
+ 25: mavutil.mavlink.MAV_CMD_NAV_WAYPOINT ,
+ 27: mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM
+ }
+ comment = ''
+ for line in file:
+ if line.startswith('#'):
+ comment = line[1:].lstrip()
+ continue
+ line = line.strip()
+ if not line:
+ continue
+ a = line.split()
+ if len(a) != 13:
+ raise MAVWPError("invalid waypoint line with %u values" % len(a))
+ if mavutil.mavlink10():
+ fn = mavutil.mavlink.MAVLink_mission_item_message
+ else:
+ fn = mavutil.mavlink.MAVLink_waypoint_message
+ w = fn(self.target_system, self.target_component,
+ int(a[0]), # seq
+ int(a[1]), # frame
+ int(a[2]), # action
+ int(a[7]), # current
+ int(a[12]), # autocontinue
+ float(a[5]), # param1,
+ float(a[6]), # param2,
+ float(a[3]), # param3
+ float(a[4]), # param4
+ float(a[9]), # x, latitude
+ float(a[8]), # y, longitude
+ float(a[10]) # z
+ )
+ if not w.command in cmdmap:
+ raise MAVWPError("Unknown v100 waypoint action %u" % w.command)
+
+ w.command = cmdmap[w.command]
+ self.add(w, comment)
+ comment = ''
+
+ def _read_waypoints_v110(self, file):
+ '''read a version 110 waypoint'''
+ comment = ''
+ for line in file:
+ if line.startswith('#'):
+ comment = line[1:].lstrip()
+ continue
+ line = line.strip()
+ if not line:
+ continue
+ a = line.split()
+ if len(a) != 12:
+ raise MAVWPError("invalid waypoint line with %u values" % len(a))
+ if mavutil.mavlink10():
+ fn = mavutil.mavlink.MAVLink_mission_item_message
+ else:
+ fn = mavutil.mavlink.MAVLink_waypoint_message
+ w = fn(self.target_system, self.target_component,
+ int(a[0]), # seq
+ int(a[2]), # frame
+ int(a[3]), # command
+ int(a[1]), # current
+ int(a[11]), # autocontinue
+ float(a[4]), # param1,
+ float(a[5]), # param2,
+ float(a[6]), # param3
+ float(a[7]), # param4
+ float(a[8]), # x (latitude)
+ float(a[9]), # y (longitude)
+ float(a[10]) # z (altitude)
+ )
+ if w.command == 0 and w.seq == 0 and self.count() == 0:
+ # special handling for Mission Planner created home wp
+ w.command = mavutil.mavlink.MAV_CMD_NAV_WAYPOINT
+ self.add(w, comment)
+ comment = ''
+
+ def _read_waypoints_pb_110(self, file):
+ if not HAVE_PROTOBUF:
+ raise MAVWPError(
+ 'Cannot read mission file in protobuf format without protobuf '
+ 'library. Try "easy_install protobuf".')
+ explicit_seq = False
+ warned_seq = False
+ mission = mission_pb2.Mission()
+ text_format.Merge(file.read(), mission)
+ defaults = mission_pb2.Waypoint()
+ # Set defaults (may be overriden in file).
+ defaults.current = False
+ defaults.autocontinue = True
+ defaults.param1 = 0.0
+ defaults.param2 = 0.0
+ defaults.param3 = 0.0
+ defaults.param4 = 0.0
+ defaults.x = 0.0
+ defaults.y = 0.0
+ defaults.z = 0.0
+ # Use defaults specified in mission file, if there are any.
+ if mission.defaults:
+ defaults.MergeFrom(mission.defaults)
+ for seq, waypoint in enumerate(mission.waypoint):
+ # Consecutive sequence numbers are automatically assigned
+ # UNLESS the mission file specifies sequence numbers of
+ # its own.
+ if waypoint.seq:
+ explicit_seq = True
+ else:
+ if explicit_seq and not warned_seq:
+ logging.warn(
+ 'Waypoint file %s: mixes explicit and implicit '
+ 'sequence numbers' % (file,))
+ warned_seq = True
+ # The first command has current=True, the rest have current=False.
+ if seq > 0:
+ current = defaults.current
+ else:
+ current = True
+ w = mavutil.mavlink.MAVLink_mission_item_message(
+ self.target_system, self.target_component,
+ waypoint.seq or seq,
+ waypoint.frame,
+ waypoint.command,
+ waypoint.current or current,
+ waypoint.autocontinue or defaults.autocontinue,
+ waypoint.param1 or defaults.param1,
+ waypoint.param2 or defaults.param2,
+ waypoint.param3 or defaults.param3,
+ waypoint.param4 or defaults.param4,
+ waypoint.x or defaults.x,
+ waypoint.y or defaults.y,
+ waypoint.z or defaults.z)
+ self.add(w)
+
+ def load(self, filename):
+ '''load waypoints from a file.
+ returns number of waypoints loaded'''
+ f = open(filename, mode='r')
+ version_line = f.readline().strip()
+ if version_line == "QGC WPL 100":
+ readfn = self._read_waypoints_v100
+ elif version_line == "QGC WPL 110":
+ readfn = self._read_waypoints_v110
+ elif version_line == "QGC WPL PB 110":
+ readfn = self._read_waypoints_pb_110
+ else:
+ f.close()
+ raise MAVWPError("Unsupported waypoint format '%s'" % version_line)
+
+ self.clear()
+ readfn(f)
+ f.close()
+
+ return len(self.wpoints)
+
+ def save_as_pb(self, filename):
+ mission = mission_pb2.Mission()
+ for w in self.wpoints:
+ waypoint = mission.waypoint.add()
+ waypoint.command = w.command
+ waypoint.frame = w.frame
+ waypoint.seq = w.seq
+ waypoint.current = w.current
+ waypoint.autocontinue = w.autocontinue
+ waypoint.param1 = w.param1
+ waypoint.param2 = w.param2
+ waypoint.param3 = w.param3
+ waypoint.param4 = w.param4
+ waypoint.x = w.x
+ waypoint.y = w.y
+ waypoint.z = w.z
+ with open(filename, 'w') as f:
+ f.write('QGC WPL PB 110\n')
+ f.write(text_format.MessageToString(mission))
+
+ def save(self, filename):
+ '''save waypoints to a file'''
+ f = open(filename, mode='w')
+ f.write("QGC WPL 110\n")
+ for w in self.wpoints:
+ if getattr(w, 'comment', None):
+ f.write("# %s\n" % w.comment)
+ f.write("%u\t%u\t%u\t%u\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%u\n" % (
+ w.seq, w.current, w.frame, w.command,
+ w.param1, w.param2, w.param3, w.param4,
+ w.x, w.y, w.z, w.autocontinue))
+ f.close()
+
+ def is_location_command(self, cmd):
+ '''see if cmd is a MAV_CMD with a latitide/longitude.
+ We check if it has Latitude and Longitude params in the right indexes'''
+ mav_cmd = mavutil.mavlink.enums['MAV_CMD']
+ if not cmd in mav_cmd:
+ return False
+ if not mav_cmd[cmd].param.get(5,'').startswith('Latitude'):
+ return False
+ if not mav_cmd[cmd].param.get(6,'').startswith('Longitude'):
+ return False
+ return True
+
+
+ def view_indexes(self, done=None):
+ '''return a list waypoint indexes in view order'''
+ ret = []
+ if done is None:
+ done = set()
+ idx = 0
+
+ # find first point not done yet
+ while idx < self.count():
+ if not idx in done:
+ break
+ idx += 1
+
+ while idx < self.count():
+ w = self.wp(idx)
+ if idx in done:
+ if w.x != 0 or w.y != 0:
+ ret.append(idx)
+ break
+ done.add(idx)
+ if w.command == mavutil.mavlink.MAV_CMD_DO_JUMP:
+ idx = int(w.param1)
+ w = self.wp(idx)
+ if w.x != 0 or w.y != 0:
+ ret.append(idx)
+ continue
+ if (w.x != 0 or w.y != 0) and self.is_location_command(w.command):
+ ret.append(idx)
+ idx += 1
+ return ret
+
+ def polygon(self, done=None):
+ '''return a polygon for the waypoints'''
+ indexes = self.view_indexes(done)
+ points = []
+ for idx in indexes:
+ w = self.wp(idx)
+ points.append((w.x, w.y))
+ return points
+
+ def polygon_list(self):
+ '''return a list of polygons for the waypoints'''
+ done = set()
+ ret = []
+ while len(done) != self.count():
+ p = self.polygon(done)
+ if len(p) > 0:
+ ret.append(p)
+ return ret
+
+ def view_list(self):
+ '''return a list of polygon indexes lists for the waypoints'''
+ done = set()
+ ret = []
+ while len(done) != self.count():
+ p = self.view_indexes(done)
+ if len(p) > 0:
+ ret.append(p)
+ return ret
+
+class MAVRallyError(Exception):
+ '''MAVLink rally point error class'''
+ def __init__(self, msg):
+ Exception.__init__(self, msg)
+ self.message = msg
+
+class MAVRallyLoader(object):
+ '''MAVLink Rally points and Rally Land ponts loader'''
+ def __init__(self, target_system=0, target_component=0):
+ self.rally_points = []
+ self.target_system = target_system
+ self.target_component = target_component
+ self.last_change = time.time()
+
+ def rally_count(self):
+ '''return number of rally points'''
+ return len(self.rally_points)
+
+ def rally_point(self, i):
+ '''return rally point i'''
+ return self.rally_points[i]
+
+ def reindex(self):
+ '''reset counters and indexes'''
+ for i in range(self.rally_count()):
+ self.rally_points[i].count = self.rally_count()
+ self.rally_points[i].idx = i
+ self.last_change = time.time()
+
+ def append_rally_point(self, p):
+ '''add rallypoint to end of list'''
+ if (self.rally_count() > 9):
+ print("Can't have more than 10 rally points, not adding.")
+ return
+
+ self.rally_points.append(p)
+ self.reindex()
+
+ def create_and_append_rally_point(self, lat, lon, alt, break_alt, land_dir, flags):
+ '''add a point via latitude/longitude'''
+ p = mavutil.mavlink.MAVLink_rally_point_message(self.target_system, self.target_component,
+ self.rally_count(), 0, lat, lon, alt, break_alt, land_dir, flags)
+ self.append_rally_point(p)
+
+ def clear(self):
+ '''clear all point lists (rally and rally_land)'''
+ self.rally_points = []
+ self.last_change = time.time()
+
+ def remove(self, i):
+ '''remove a rally point'''
+ if i < 1 or i > self.rally_count():
+ print("Invalid rally point number %u" % i)
+ self.rally_points.pop(i-1)
+ self.reindex()
+
+ def move(self, i, lat, lng, change_time=True):
+ '''move a rally point'''
+ if i < 1 or i > self.rally_count():
+ print("Invalid rally point number %u" % i)
+ self.rally_points[i-1].lat = int(lat*1e7)
+ self.rally_points[i-1].lng = int(lng*1e7)
+ if change_time:
+ self.last_change = time.time()
+
+ def set_alt(self, i, alt, break_alt=None, change_time=True):
+ '''set rally point altitude(s)'''
+ if i < 1 or i > self.rally_count():
+ print("Inavlid rally point number %u" % i)
+ return
+ self.rally_points[i-1].alt = int(alt)
+ if (break_alt != None):
+ self.rally_points[i-1].break_alt = break_alt
+ if change_time:
+ self.last_change = time.time()
+
+ def load(self, filename):
+ '''load rally and rally_land points from a file.
+ returns number of points loaded'''
+ f = open(filename, mode='r')
+ self.clear()
+ for line in f:
+ if line.startswith('#'):
+ continue
+ line = line.strip()
+ if not line:
+ continue
+ a = line.split()
+ if len(a) != 7:
+ raise MAVRallyError("invalid rally file line: %s" % line)
+
+ if (a[0].lower() == "rally"):
+ self.create_and_append_rally_point(float(a[1]) * 1e7, float(a[2]) * 1e7,
+ float(a[3]), float(a[4]), float(a[5]) * 100.0, int(a[6]))
+ f.close()
+ return len(self.rally_points)
+
+ def save(self, filename):
+ '''save fence points to a file'''
+ f = open(filename, mode='w')
+ for p in self.rally_points:
+ f.write("RALLY %f\t%f\t%f\t%f\t%f\t%d\n" % (p.lat * 1e-7, p.lng * 1e-7, p.alt,
+ p.break_alt, p.land_dir, p.flags))
+ f.close()
+
+class MAVFenceError(Exception):
+ '''MAVLink fence error class'''
+ def __init__(self, msg):
+ Exception.__init__(self, msg)
+ self.message = msg
+
+class MAVFenceLoader(object):
+ '''MAVLink geo-fence loader'''
+ def __init__(self, target_system=0, target_component=0):
+ self.points = []
+ self.target_system = target_system
+ self.target_component = target_component
+ self.last_change = time.time()
+
+ def count(self):
+ '''return number of points'''
+ return len(self.points)
+
+ def point(self, i):
+ '''return a point'''
+ return self.points[i]
+
+ def add(self, p):
+ '''add a point'''
+ self.points.append(p)
+ self.reindex()
+
+ def reindex(self):
+ '''reindex waypoints'''
+ for i in range(self.count()):
+ w = self.points[i]
+ w.idx = i
+ w.count = self.count()
+ w.target_system = self.target_system
+ w.target_component = self.target_component
+ self.last_change = time.time()
+
+ def add_latlon(self, lat, lon):
+ '''add a point via latitude/longitude'''
+ p = mavutil.mavlink.MAVLink_fence_point_message(self.target_system, self.target_component,
+ self.count(), 0, lat, lon)
+ self.add(p)
+
+ def clear(self):
+ '''clear point list'''
+ self.points = []
+ self.last_change = time.time()
+
+ def load(self, filename):
+ '''load points from a file.
+ returns number of points loaded'''
+ f = open(filename, mode='r')
+ self.clear()
+ for line in f:
+ if line.startswith('#'):
+ continue
+ line = line.strip()
+ if not line:
+ continue
+ a = line.split()
+ if len(a) != 2:
+ raise MAVFenceError("invalid fence point line: %s" % line)
+ self.add_latlon(float(a[0]), float(a[1]))
+ f.close()
+ return len(self.points)
+
+ def save(self, filename):
+ '''save fence points to a file'''
+ f = open(filename, mode='w')
+ for p in self.points:
+ f.write("%f\t%f\n" % (p.lat, p.lng))
+ f.close()
+
+ def move(self, i, lat, lng, change_time=True):
+ '''move a fence point'''
+ if i < 0 or i >= self.count():
+ print("Invalid fence point number %u" % i)
+ self.points[i].lat = lat
+ self.points[i].lng = lng
+ # ensure we close the polygon
+ if i == 1:
+ self.points[self.count()-1].lat = lat
+ self.points[self.count()-1].lng = lng
+ if i == self.count() - 1:
+ self.points[1].lat = lat
+ self.points[1].lng = lng
+ if change_time:
+ self.last_change = time.time()
+
+ def remove(self, i, change_time=True):
+ '''remove a fence point'''
+ if i < 0 or i >= self.count():
+ print("Invalid fence point number %u" % i)
+ self.points.pop(i)
+ # ensure we close the polygon
+ if i == 1:
+ self.points[self.count()-1].lat = self.points[1].lat
+ self.points[self.count()-1].lng = self.points[1].lng
+ if i == self.count():
+ self.points[1].lat = self.points[self.count()-1].lat
+ self.points[1].lng = self.points[self.count()-1].lng
+ if change_time:
+ self.last_change = time.time()
+
+ def polygon(self):
+ '''return a polygon for the fence'''
+ points = []
+ for fp in self.points[1:]:
+ points.append((fp.lat, fp.lng))
+ return points
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ardupilotmega.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ardupilotmega.xml
new file mode 100644
index 000000000..673353165
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ardupilotmega.xml
@@ -0,0 +1,270 @@
+
+
+ common.xml
+
+
+
+
+
+
+ Enumeration of possible mount operation modes
+ Load and keep safe position (Roll,Pitch,Yaw) from EEPROM and stop stabilization
+ Load and keep neutral position (Roll,Pitch,Yaw) from EEPROM.
+ Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start RC Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start to point to Lat,Lon,Alt
+
+
+
+
+
+ Mission command to configure an on-board camera controller system.
+ Modes: P, TV, AV, M, Etc
+ Shutter speed: Divisor number for one second
+ Aperture: F stop number
+ ISO number e.g. 80, 100, 200, Etc
+ Exposure type enumerator
+ Command Identity
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+
+
+
+ Mission command to control an on-board camera controller system.
+ Session control e.g. show/hide lens
+ Zoom's absolute position
+ Zooming step value to offset zoom from the current position
+ Focus Locking, Unlocking or Re-locking
+ Shooting Command
+ Command Identity
+ Empty
+
+
+
+
+ Mission command to configure a camera or antenna mount
+ Mount operation mode (see MAV_MOUNT_MODE enum)
+ stabilize roll? (1 = yes, 0 = no)
+ stabilize pitch? (1 = yes, 0 = no)
+ stabilize yaw? (1 = yes, 0 = no)
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to control a camera or antenna mount
+ pitch(deg*100) or lat, depending on mount mode.
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+
+ Disable fenced mode
+
+
+ Switched to guided mode to return point (fence point 0)
+
+
+
+
+
+ No last fence breach
+
+
+ Breached minimum altitude
+
+
+ Breached minimum altitude
+
+
+ Breached fence boundary
+
+
+
+
+
+
+ Offsets and calibrations values for hardware
+ sensors. This makes it easier to debug the calibration process.
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+ magnetic declination (radians)
+ raw pressure from barometer
+ raw temperature from barometer
+ gyro X calibration
+ gyro Y calibration
+ gyro Z calibration
+ accel X calibration
+ accel Y calibration
+ accel Z calibration
+
+
+
+ set the magnetometer offsets
+ System ID
+ Component ID
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+
+
+
+ state of APM memory
+ heap top
+ free memory
+
+
+
+ raw ADC output
+ ADC output 1
+ ADC output 2
+ ADC output 3
+ ADC output 4
+ ADC output 5
+ ADC output 6
+
+
+
+
+ Configure on-board Camera Control System.
+ System ID
+ Component ID
+ Mode enumeration from 1 to N //P, TV, AV, M, Etc (0 means ignore)
+ Divisor number //e.g. 1000 means 1/1000 (0 means ignore)
+ F stop number x 10 //e.g. 28 means 2.8 (0 means ignore)
+ ISO enumeration from 1 to N //e.g. 80, 100, 200, Etc (0 means ignore)
+ Exposure type enumeration from 1 to N (0 means ignore)
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+ Control on-board Camera Control System to take shots.
+ System ID
+ Component ID
+ 0: stop, 1: start or keep it up //Session control e.g. show/hide lens
+ 1 to N //Zoom's absolute position (0 means ignore)
+ -100 to 100 //Zooming step value to offset zoom from the current position
+ 0: unlock focus or keep unlocked, 1: lock focus or keep locked, 3: re-lock focus
+ 0: ignore, 1: shot or start filming
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+
+ Message to configure a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ mount operating mode (see MAV_MOUNT_MODE enum)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+
+
+
+ Message to control a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ pitch(deg*100) or lat, depending on mount mode
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+ if "1" it will save current trimmed position on EEPROM (just valid for NEUTRAL and LANDING)
+
+
+
+ Message with some status from APM to GCS about camera or antenna mount
+ System ID
+ Component ID
+ pitch(deg*100) or lat, depending on mount mode
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+
+
+
+
+ A fence point. Used to set a point when from
+ GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+ total number of points (for sanity checking)
+ Latitude of point
+ Longitude of point
+
+
+
+ Request a current fence point from MAV
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+
+
+
+ Status of geo-fencing. Sent in extended
+ status stream when fencing enabled
+ 0 if currently inside fence, 1 if outside
+ number of fence breaches
+ last breach type (see FENCE_BREACH_* enum)
+ time of last breach in milliseconds since boot
+
+
+
+ Status of DCM attitude estimator
+ X gyro drift estimate rad/s
+ Y gyro drift estimate rad/s
+ Z gyro drift estimate rad/s
+ average accel_weight
+ average renormalisation value
+ average error_roll_pitch value
+ average error_yaw value
+
+
+
+ Status of simulation environment, if used
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+
+
+
+ Status of key hardware
+ board voltage (mV)
+ I2C error count
+
+
+
+ Status generated by radio
+ local signal strength
+ remote signal strength
+ how full the tx buffer is as a percentage
+ background noise level
+ remote background noise level
+ receive errors
+ count of error corrected packets
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/common.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/common.xml
new file mode 100644
index 000000000..dd4ea8443
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/common.xml
@@ -0,0 +1,941 @@
+
+
+ 2
+
+
+ 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.
+
+ Navigate to waypoint.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at waypoint for rotary wing)
+ Acceptance radius in meters (if the sphere with this radius is hit, the waypoint counts as reached)
+ 0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.
+ Desired yaw angle at waypoint (rotary wing)
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this waypoint an unlimited amount of time
+ Empty
+ Empty
+ Radius around waypoint, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this waypoint for X turns
+ Turns
+ Empty
+ Radius around waypoint, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this waypoint for X seconds
+ Seconds (decimal)
+ Empty
+ Radius around waypoint, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Return to launch location
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Land at location
+ Empty
+ Empty
+ Empty
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Takeoff from ground / hand
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor
+ Empty
+ Empty
+ Yaw angle (if magnetometer present), ignored without magnetometer
+ Latitude
+ Longitude
+ Altitude
+
+
+ Sets the region of interest (ROI) for a sensor set or the
+ vehicle itself. This can then be used by the vehicles control
+ system to control the vehicle attitude and the attitude of various
+ sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ Waypoint index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+ Control autonomous path planning on the MAV.
+ 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning
+ 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
+ Empty
+ Yaw angle at goal, in compass degrees, [0..360]
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay mission state machine.
+ Delay in seconds (decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Ascend/descend at rate. Delay mission state machine until desired altitude reached.
+ Descent / Ascend rate (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Finish Altitude
+
+
+ Delay mission state machine until within desired distance of next NAV point.
+ Distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Reach a certain target angle.
+ target angle: [0-360], 0 is north
+ speed during yaw change:[deg per second]
+ direction: negative: counter clockwise, positive: clockwise [-1,1]
+ relative offset or absolute angle: [ 1,0]
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set system mode.
+ Mode, as defined by ENUM MAV_MODE
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Jump to the desired command in the mission list. Repeat this action only the specified number of times
+ Sequence number
+ Repeat count
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change speed and/or throttle set points.
+ Speed type (0=Airspeed, 1=Ground Speed)
+ Speed (m/s, -1 indicates no change)
+ Throttle ( Percent, -1 indicates no change)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Changes the home location either to the current location or a specified location.
+ Use current (1=use current location, 0=use specified location)
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Altitude
+
+
+ Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.
+ Parameter number
+ Parameter value
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a relay to a condition.
+ Relay number
+ Setting (1=on, 0=off, others possible depending on system hardware)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a relay on and off for a desired number of cyles with a desired period.
+ Relay number
+ Cycle count
+ Cycle time (seconds, decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a servo to a desired PWM value.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Cycle count
+ Cycle time (seconds)
+ Empty
+ Empty
+ Empty
+
+
+ Control onboard camera capturing.
+ Camera ID (-1 for all)
+ Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Transmission mode: 0: video stream, >0: single images every n seconds (decimal)
+ Recording: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Empty
+ Empty
+ Empty
+
+
+ Sets the region of interest (ROI) for a sensor set or the
+ vehicle itself. This can then be used by the vehicles control
+ system to control the vehicle attitude and the attitude of various
+ devices such as cameras.
+
+ Region of interest mode. (see MAV_ROI enum)
+ Waypoint index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple cameras etc.)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+ NOP - This command is only used to mark the upper limit of the DO commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Trigger calibration. This command will be only accepted if in pre-flight mode.
+ Gyro calibration: 0: no, 1: yes
+ Magnetometer calibration: 0: no, 1: yes
+ Ground pressure: 0: no, 1: yes
+ Radio calibration: 0: no, 1: yes
+ Empty
+ Empty
+ Empty
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM
+ Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM
+ Reserved
+ Reserved
+ Empty
+ Empty
+ Empty
+
+
+
+ Data stream IDs. 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.
+
+
+ Enable all data streams
+
+
+ Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+
+
+ Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+
+
+ Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+
+
+ Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.
+
+
+ Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+
+ 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).
+
+
+ No region of interest.
+
+
+ Point toward next waypoint.
+
+
+ Point toward given waypoint.
+
+
+ Point toward fixed location.
+
+
+ Point toward of given id.
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Type of the Autopilot: 0: Generic, 1: PIXHAWK, 2: SLUGS, 3: Ardupilot (up to 15 types), defined in MAV_AUTOPILOT_TYPE ENUM
+ MAVLink version
+
+
+ The boot message indicates that a system is starting. The onboard software version allows to keep track of onboard soft/firmware revisions.
+ The onboard software version
+
+
+ The system time is the time of the master clock, typically the computer clock of the main onboard computer.
+ Timestamp of the master clock in microseconds since UNIX epoch.
+
+
+ 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.
+ PING sequence
+ 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
+ 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system
+ Unix timestamp in microseconds
+
+
+ UTC date and time from GPS module
+ GPS UTC date ddmmyy
+ GPS UTC time hhmmss
+
+
+ Request to control this MAV
+ System the GCS requests control for
+ 0: request control of this MAV, 1: Release control of this MAV
+ 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.
+ 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 "!?,.-"
+
+
+ Accept / deny control of this MAV
+ ID of the GCS this message
+ 0: request control of this MAV, 1: Release control of this MAV
+ 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control
+
+
+ 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.
+ key
+
+
+ This message acknowledges an action. IMPORTANT: The acknowledgement can be also negative, e.g. the MAV rejects a reset message because it is in-flight. The action ids are defined in ENUM MAV_ACTION in mavlink/include/mavlink_types.h
+ The action id
+ 0: Action DENIED, 1: Action executed
+
+
+ An action message allows to execute a certain onboard action. These include liftoff, land, storing parameters too EEPROM, shutddown, etc. The action ids are defined in ENUM MAV_ACTION in mavlink/include/mavlink_types.h
+ The system executing the action
+ The component executing the action
+ The action id
+
+
+ Set the system mode, as defined by enum MAV_MODE in mavlink/include/mavlink_types.h. There is no target component id as the mode is by definition for the overall aircraft, not only for one component.
+ The system setting the mode
+ The new mode
+
+
+ Set the system navigation mode, as defined by enum MAV_NAV_MODE in mavlink/include/mavlink_types.h. The navigation mode applies to the whole aircraft and thus all components.
+ The system setting the mode
+ The new navigation mode
+
+
+ Request to read the onboard parameter with the param_id string id. Onboard parameters are stored as key[const char*] -> 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 http://qgroundcontrol.org/parameter_interface for a full documentation of QGroundControl and IMU code.
+ System ID
+ Component ID
+ Onboard parameter id
+ Parameter index. Send -1 to use the param ID field as identifier
+
+
+ Request all parameters of this component. After his request, all parameters are emitted.
+ System ID
+ Component ID
+
+
+ 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.
+ Onboard parameter id
+ Onboard parameter value
+ Total number of onboard parameters
+ Index of this onboard parameter
+
+
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default on system reboot. Send the ACTION MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM contents to EEPROM. IMPORTANT: The receiving component should acknowledge the new parameter value by sending a param_value message to all communication partners. This will also ensure that multiple GCS all have an up-to-date list of all parameters. If the sending GCS did not receive a PARAM_VALUE message within its timeout time, it should re-send the PARAM_SET message.
+ System ID
+ Component ID
+ Onboard parameter id
+ Onboard parameter value
+
+
+ The global position, as returned by the Global Positioning System (GPS). This is
+NOT the global position estimate of the sytem, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ 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.
+ Latitude in 1E7 degrees
+ Longitude in 1E7 degrees
+ Altitude in 1E3 meters (millimeters)
+ GPS HDOP
+ GPS VDOP
+ GPS ground speed (m/s)
+ Compass heading in degrees, 0..360 degrees
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ 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 for the global position estimate. This message can contain information for up to 20 satellites.
+ Number of satellites visible
+ Global satellite ID
+ 0: Satellite not used, 1: used for localization
+ Elevation (0: right on top of receiver, 90: on the horizon) of satellite
+ Direction of satellite, 0: 0 deg, 255: 360 deg.
+ Signal to noise ratio of satellite
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should always contain the true raw values without any scaling to allow data capture and system debugging.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X acceleration (raw)
+ Y acceleration (raw)
+ Z acceleration (raw)
+ Angular speed around X axis (raw)
+ Angular speed around Y axis (raw)
+ Angular speed around Z axis (raw)
+ X Magnetic field (raw)
+ Y Magnetic field (raw)
+ Z Magnetic field (raw)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Absolute pressure (raw)
+ Differential pressure 1 (raw)
+ Differential pressure 2 (raw)
+ Raw Temperature measurement (raw)
+
+
+ The pressure readings for the typical setup of one absolute and differential pressure sensor. The units are as specified in each field.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ The filtered local position (e.g. fused computer vision and accelerometers). Coordinate frame is right-handed, Z-axis down (aeronautical frame)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ X Speed
+ Y Speed
+ Z Speed
+
+
+ The filtered global position (e.g. fused GPS and accelerometers). Coordinate frame is right-handed, Z-axis up (GPS frame)
+ Timestamp (microseconds since unix epoch)
+ Latitude, in degrees
+ Longitude, in degrees
+ Absolute altitude, in meters
+ X Speed (in Latitude direction, positive: going north)
+ Y Speed (in Longitude direction, positive: going east)
+ Z Speed (in Altitude direction, positive: going up)
+
+
+ The global position, as returned by the Global Positioning System (GPS). This is
+NOT the global position estimate of the sytem, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ 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.
+ Latitude in degrees
+ Longitude in degrees
+ Altitude in meters
+ GPS HDOP
+ GPS VDOP
+ GPS ground speed
+ Compass heading in degrees, 0..360 degrees
+
+
+ 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 wether the system is currently active or not and if an emergency occured. During the CRITICAL and EMERGENCY states the MAV is still considered to be active, but should start emergency procedures autonomously. After a failure occured it should first move from active to critical to allow manual intervention and then move to emergency after a certain timeout.
+ System mode, see MAV_MODE ENUM in mavlink/include/mavlink_types.h
+ Navigation mode, see MAV_NAV_MODE ENUM
+ System status flag, see MAV_STATUS ENUM
+ Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
+ Battery voltage, in millivolts (1 = 1 millivolt)
+ Remaining battery energy: (0%: 0, 100%: 1000)
+ Dropped packets (packets that were corrupted on reception on the MAV)
+
+
+ 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.
+ RC channel 1 value, in microseconds
+ RC channel 2 value, in microseconds
+ RC channel 3 value, in microseconds
+ RC channel 4 value, in microseconds
+ RC channel 5 value, in microseconds
+ RC channel 6 value, in microseconds
+ RC channel 7 value, in microseconds
+ RC channel 8 value, in microseconds
+ Receive signal strength indicator, 0: 0%, 255: 100%
+
+
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000
+ Receive signal strength indicator, 0: 0%, 255: 100%
+
+
+ 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%.
+ Servo output 1 value, in microseconds
+ Servo output 2 value, in microseconds
+ Servo output 3 value, in microseconds
+ Servo output 4 value, in microseconds
+ Servo output 5 value, in microseconds
+ Servo output 6 value, in microseconds
+ Servo output 7 value, in microseconds
+ Servo output 8 value, in microseconds
+
+
+ Message encoding a waypoint. This message is emitted to announce
+ the presence of a waypoint and to set a waypoint on the system. The waypoint can be either in x, y, z meters (type: LOCAL) or x:lat, y:lon, z:altitude. Local frame is Z-down, right handed, global frame is Z-up, right handed
+ System ID
+ Component ID
+ Sequence
+ The coordinate system of the waypoint. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the waypoint. see MAV_COMMAND in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1 / For NAV command waypoints: Radius in which the waypoint is accepted as reached, in meters
+ PARAM2 / For NAV command waypoints: Time that the MAV should stay inside the PARAM1 radius before advancing, in milliseconds
+ PARAM3 / For LOITER command waypoints: Orbit to circle around the waypoint, in meters. If positive the orbit direction should be clockwise, if negative the orbit direction should be counter-clockwise.
+ PARAM4 / For NAV and LOITER command waypoints: Yaw orientation in degrees, [0..360] 0 = NORTH
+ PARAM5 / local: x position, global: latitude
+ PARAM6 / y position: global: longitude
+ PARAM7 / z position: global: altitude
+
+
+ Request the information of the waypoint with the sequence number seq. The response of the system to this message should be a WAYPOINT message.
+ System ID
+ Component ID
+ Sequence
+
+
+ Set the waypoint with sequence number seq as current waypoint. This means that the MAV will continue to this waypoint on the shortest path (not following the waypoints in-between).
+ System ID
+ Component ID
+ Sequence
+
+
+ Message that announces the sequence number of the current active waypoint. The MAV will fly towards this waypoint.
+ Sequence
+
+
+ Request the overall list of waypoints from the system/component.
+ System ID
+ Component ID
+
+
+ This message is emitted as response to WAYPOINT_REQUEST_LIST by the MAV. The GCS can then request the individual waypoints based on the knowledge of the total number of waypoints.
+ System ID
+ Component ID
+ Number of Waypoints in the Sequence
+
+
+ Delete all waypoints at once.
+ System ID
+ Component ID
+
+
+ A certain waypoint 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.
+ Sequence
+
+
+ Ack 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).
+ System ID
+ Component ID
+ 0: OK, 1: Error
+
+
+ As local waypoints exist, the global waypoint reference allows to transform between the local coordinate frame and the global (GPS) coordinate frame. This can be necessary when e.g. in- and outdoor settings are connected and the MAV should move from in- to outdoor.
+ System ID
+ Component ID
+ global position * 1E7
+ global position * 1E7
+ global position * 1000
+
+
+ Once the MAV sets a new GPS-Local correspondence, this message announces the origin (0,0,0) position
+ Latitude (WGS84), expressed as * 1E7
+ Longitude (WGS84), expressed as * 1E7
+ Altitude(WGS84), expressed as * 1000
+
+
+ Set the setpoint for a local position controller. This is the position in local coordinates the MAV should fly to. This message is sent by the path/waypoint planner to the onboard position controller. As some MAVs have a degree of freedom in yaw (e.g. all helicopters/quadrotors), the desired yaw angle is part of the message.
+ System ID
+ Component ID
+ x position
+ y position
+ z position
+ Desired yaw angle
+
+
+ Transmit the current local setpoint of the controller to other MAVs (collision avoidance) and to the GCS.
+ x position
+ y position
+ z position
+ Desired yaw angle
+
+
+ Position fix: 0: lost, 2: 2D position fix, 3: 3D position fix
+ Vision position fix: 0: lost, 1: 2D local position hold, 2: 2D global position fix, 3: 3D global position fix
+ GPS position fix: 0: no reception, 1: Minimum 1 satellite, but no position fix, 2: 2D position fix, 3: 3D position fix
+ Attitude estimation health: 0: poor, 255: excellent
+ 0: Attitude control disabled, 1: enabled
+ 0: X, Y position control disabled, 1: enabled
+ 0: Z position control disabled, 1: enabled
+ 0: Yaw angle control disabled, 1: enabled
+
+
+ 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.
+ System ID
+ Component ID
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ Read out the safety zone the MAV currently assumes.
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ Set roll, pitch and yaw.
+ System ID
+ Component ID
+ Desired roll angle in radians
+ Desired pitch angle in radians
+ Desired yaw angle in radians
+ Collective thrust, normalized to 0 .. 1
+
+
+ Set roll, pitch and yaw.
+ System ID
+ Component ID
+ Desired roll angular speed in rad/s
+ Desired pitch angular speed in rad/s
+ Desired yaw angular speed in rad/s
+ Collective thrust, normalized to 0 .. 1
+
+
+ Setpoint in roll, pitch, yaw currently active on the system.
+ Timestamp in micro seconds since unix epoch
+ Desired roll angle in radians
+ Desired pitch angle in radians
+ Desired yaw angle in radians
+ Collective thrust, normalized to 0 .. 1
+
+
+ Setpoint in rollspeed, pitchspeed, yawspeed currently active on the system.
+ Timestamp in micro seconds since unix epoch
+ Desired roll angular speed in rad/s
+ Desired pitch angular speed in rad/s
+ Desired yaw angular speed in rad/s
+ Collective thrust, normalized to 0 .. 1
+
+
+ Outputs of the APM navigation controller. The primary use of this message is to check the response and signs
+of the controller before actual flight and to assist with tuning controller parameters
+ Current desired roll in degrees
+ Current desired pitch in degrees
+ Current desired heading in degrees
+ Bearing to current waypoint/target in degrees
+ Distance to active waypoint in meters
+ Current altitude error in meters
+ Current airspeed error in meters/second
+ Current crosstrack error on x-y plane in meters
+
+
+ The goal position of the system. This position is the input to any navigation or path planning algorithm and does NOT represent the current controller setpoint.
+ x position
+ y position
+ z position
+ yaw orientation in radians, 0 = NORTH
+
+
+ Corrects the systems state by adding an error correction term to the position and velocity, and by rotating the attitude by a correction angle.
+ x position error
+ y position error
+ z position error
+ roll error (radians)
+ pitch error (radians)
+ yaw error (radians)
+ x velocity
+ y velocity
+ z velocity
+
+
+ The system setting the altitude
+ The new altitude in meters
+
+
+ The target requested to send the message stream.
+ The target requested to send the message stream.
+ The ID of the requested message type
+ Update rate in Hertz
+ 1 to start sending, 0 to stop sending.
+
+
+ This packet is useful for high throughput
+ applications such as hardware in the loop simulations.
+
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ Hardware in the loop control outputs
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control output -3 .. 1
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Throttle 0 .. 1
+ System mode (MAV_MODE)
+ Navigation mode (MAV_NAV_MODE)
+
+
+ The system to be controlled
+ roll
+ pitch
+ yaw
+ thrust
+ roll control enabled auto:0, manual:1
+ pitch auto:0, manual:1
+ yaw auto:0, manual:1
+ thrust auto:0, manual:1
+
+
+ The RAW values of the RC channels sent to the MAV to override info received from the RC radio. A value of -1 means no change to that channel. A value of 0 means control of that channel should be released back to the RC radio. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.
+ System ID
+ Component ID
+ RC channel 1 value, in microseconds
+ RC channel 2 value, in microseconds
+ RC channel 3 value, in microseconds
+ RC channel 4 value, in microseconds
+ RC channel 5 value, in microseconds
+ RC channel 6 value, in microseconds
+ RC channel 7 value, in microseconds
+ RC channel 8 value, in microseconds
+
+
+ The filtered global position (e.g. fused GPS and accelerometers). The position is in GPS-frame (right-handed, Z-up)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+
+
+ Metrics typically displayed on a HUD for fixed wing aircraft
+ Current airspeed in m/s
+ Current ground speed in m/s
+ Current heading in degrees, in compass units (0..360, 0=north)
+ Current throttle setting in integer percent, 0 to 100
+ Current altitude (MSL), in meters
+ Current climb rate in meters/second
+
+
+ Send a command with up to four parameters to the MAV
+ System which should execute the command
+ Component which should execute the command, 0 for all components
+ Command ID, as defined by MAV_CMD enum.
+ 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)
+ Parameter 1, as defined by MAV_CMD enum.
+ Parameter 2, as defined by MAV_CMD enum.
+ Parameter 3, as defined by MAV_CMD enum.
+ Parameter 4, as defined by MAV_CMD enum.
+
+
+ Report status of a command. Includes feedback wether the command was executed
+ Current airspeed in m/s
+ 1: Action ACCEPTED and EXECUTED, 1: Action TEMPORARY REJECTED/DENIED, 2: Action PERMANENTLY DENIED, 3: Action UNKNOWN/UNSUPPORTED, 4: Requesting CONFIRMATION
+
+
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+ Timestamp (UNIX)
+ Sensor ID
+ Flow in pixels in x-sensor direction
+ Flow in pixels in y-sensor direction
+ Optical flow quality / confidence. 0: bad, 255: maximum quality
+ Ground distance in meters
+
+
+ Object has been detected
+ Timestamp in milliseconds since system boot
+ Object ID
+ Object type: 0: image, 1: letter, 2: ground vehicle, 3: air vehicle, 4: surface vehicle, 5: sub-surface vehicle, 6: human, 7: animal
+ Name of the object as defined by the detector
+ Detection quality / confidence. 0: bad, 255: maximum confidence
+ Angle of the object with respect to the body frame in NED coordinates in radians. 0: front
+ Ground distance in meters
+
+
+
+ Name
+ Timestamp
+ x
+ y
+ z
+
+
+ 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.
+ Name of the debug variable
+ Floating point value
+
+
+ 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.
+ Name of the debug variable
+ Signed integer value
+
+
+ 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).
+ Severity of status, 0 = info message, 255 = critical fault
+ Status text message, without null termination character
+
+
+ Send a debug value. The index is used to discriminate between values. These values show up in the plot of QGroundControl as DEBUG N.
+ index of debug variable
+ DEBUG value
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/minimal.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/minimal.xml
new file mode 100644
index 000000000..5b41a4909
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/minimal.xml
@@ -0,0 +1,13 @@
+
+
+ 2
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Type of the Autopilot: 0: Generic, 1: PIXHAWK, 2: SLUGS, 3: Ardupilot (up to 15 types), defined in MAV_AUTOPILOT_TYPE ENUM
+ MAVLink version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/slugs.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/slugs.xml
new file mode 100644
index 000000000..db08abb39
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/slugs.xml
@@ -0,0 +1,148 @@
+
+
+ common.xml
+
+
+
+
+
+
+
+ Sensor and DSC control loads.
+
+ Sensor DSC Load
+ Control DSC Load
+ Battery Voltage in millivolts
+
+
+
+
+ Air data for altitude and airspeed computation.
+
+ Dynamic pressure (Pa)
+ Static pressure (Pa)
+ Board temperature
+
+
+
+ Accelerometer and gyro biases.
+ Accelerometer X bias (m/s)
+ Accelerometer Y bias (m/s)
+ Accelerometer Z bias (m/s)
+ Gyro X bias (rad/s)
+ Gyro Y bias (rad/s)
+ Gyro Z bias (rad/s)
+
+
+
+ Configurable diagnostic messages.
+ Diagnostic float 1
+ Diagnostic float 2
+ Diagnostic float 3
+ Diagnostic short 1
+ Diagnostic short 2
+ Diagnostic short 3
+
+
+
+ Data used in the navigation algorithm.
+ Measured Airspeed prior to the Nav Filter
+ Commanded Roll
+ Commanded Pitch
+ Commanded Turn rate
+ Y component of the body acceleration
+ Total Distance to Run on this leg of Navigation
+ Remaining distance to Run on this leg of Navigation
+ Origin WP
+ Destination WP
+
+
+
+ Configurable data log probes to be used inside Simulink
+ Log value 1
+ Log value 2
+ Log value 3
+ Log value 4
+ Log value 5
+ Log value 6
+
+
+
+ Pilot console PWM messges.
+ Year reported by Gps
+ Month reported by Gps
+ Day reported by Gps
+ Hour reported by Gps
+ Min reported by Gps
+ Sec reported by Gps
+ Visible sattelites reported by Gps
+
+
+
+ Mid Level commands sent from the GS to the autopilot. These are only sent when being opperated in mid-level commands mode from the ground; for periodic report of these commands generated from the autopilot see message XXXX.
+ The system setting the commands
+ Commanded Airspeed
+ Log value 2
+ Log value 3
+
+
+
+
+ This message configures the Selective Passthrough mode. it allows to select which control surfaces the Pilot can control from his console. It is implemented as a bitfield as follows:
+ Position Bit Code
+ =================================
+ 15-8 Reserved
+ 7 dt_pass 128
+ 6 dla_pass 64
+ 5 dra_pass 32
+ 4 dr_pass 16
+ 3 dle_pass 8
+ 2 dre_pass 4
+ 1 dlf_pass 2
+ 0 drf_pass 1
+ Where Bit 15 is the MSb. 0 = AP has control of the surface; 1 = Pilot Console has control of the surface.
+ The system setting the commands
+ Bitfield containing the PT configuration
+
+
+
+
+
+ Action messages focused on the SLUGS AP.
+ The system reporting the action
+ Action ID. See apDefinitions.h in the SLUGS /clib directory for the ID names
+ Value associated with the action
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/test.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/test.xml
new file mode 100644
index 000000000..43a11e3d1
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/test.xml
@@ -0,0 +1,31 @@
+
+
+ 3
+
+
+ Test all field types
+ char
+ string
+ uint8_t
+ uint16_t
+ uint32_t
+ uint64_t
+ int8_t
+ int16_t
+ int32_t
+ int64_t
+ float
+ double
+ uint8_t_array
+ uint16_t_array
+ uint32_t_array
+ uint64_t_array
+ int8_t_array
+ int16_t_array
+ int32_t_array
+ int64_t_array
+ float_array
+ double_array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ualberta.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ualberta.xml
new file mode 100644
index 000000000..4023aa908
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v0.9/ualberta.xml
@@ -0,0 +1,54 @@
+
+
+ common.xml
+
+
+ Available autopilot modes for ualberta uav
+ Raw input pulse widts sent to output
+ Inputs are normalized using calibration, the converted back to raw pulse widths for output
+ dfsdfs
+ dfsfds
+ dfsdfsdfs
+
+
+ Navigation filter mode
+
+ AHRS mode
+ INS/GPS initialization mode
+ INS/GPS mode
+
+
+ Mode currently commanded by pilot
+ sdf
+ dfs
+ Rotomotion mode
+
+
+
+
+ Accelerometer and Gyro biases from the navigation filter
+ Timestamp (microseconds)
+ b_f[0]
+ b_f[1]
+ b_f[2]
+ b_f[0]
+ b_f[1]
+ b_f[2]
+
+
+ Complete set of calibration parameters for the radio
+ Aileron setpoints: left, center, right
+ Elevator setpoints: nose down, center, nose up
+ Rudder setpoints: nose left, center, nose right
+ Tail gyro mode/gain setpoints: heading hold, rate mode
+ Pitch curve setpoints (every 25%)
+ Throttle curve setpoints (every 25%)
+
+
+ System status specific to ualberta uav
+ System mode, see UALBERTA_AUTOPILOT_MODE ENUM
+ Navigation mode, see UALBERTA_NAV_MODE ENUM
+ Pilot mode, see UALBERTA_PILOT_MODE
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ASLUAV.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ASLUAV.xml
new file mode 100644
index 000000000..5eba2d187
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ASLUAV.xml
@@ -0,0 +1,202 @@
+
+
+
+
+ common.xml
+
+
+
+
+ Mission command to reset Maximum Power Point Tracker (MPPT)
+ MPPT number
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a power cycle on payload
+ Complete power cycle
+ VISensor power cycle
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Voltage and current sensor data
+ Power board voltage sensor reading in volts
+ Power board current sensor reading in amps
+ Board current sensor 1 reading in amps
+ Board current sensor 2 reading in amps
+
+
+ Maximum Power Point Tracker (MPPT) sensor data for solar module power performance tracking
+ MPPT last timestamp
+ MPPT1 voltage
+ MPPT1 current
+ MPPT1 pwm
+ MPPT1 status
+ MPPT2 voltage
+ MPPT2 current
+ MPPT2 pwm
+ MPPT2 status
+ MPPT3 voltage
+ MPPT3 current
+ MPPT3 pwm
+ MPPT3 status
+
+
+ ASL-fixed-wing controller data
+ Timestamp
+ ASLCTRL control-mode (manual, stabilized, auto, etc...)
+ See sourcecode for a description of these values...
+
+
+ Pitch angle [deg]
+ Pitch angle reference[deg]
+
+
+
+
+
+
+ Airspeed reference [m/s]
+
+ Yaw angle [deg]
+ Yaw angle reference[deg]
+ Roll angle [deg]
+ Roll angle reference[deg]
+
+
+
+
+
+
+
+
+ ASL-fixed-wing controller debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+ Debug data
+
+
+ Extended state information for ASLUAVs
+ Status of the position-indicator LEDs
+ Status of the IRIDIUM satellite communication system
+ Status vector for up to 8 servos
+ Motor RPM
+
+
+
+ Extended EKF state estimates for ASLUAVs
+ Time since system start [us]
+ Magnitude of wind velocity (in lateral inertial plane) [m/s]
+ Wind heading angle from North [rad]
+ Z (Down) component of inertial wind velocity [m/s]
+ Magnitude of air velocity [m/s]
+ Sideslip angle [rad]
+ Angle of attack [rad]
+
+
+ Off-board controls/commands for ASLUAVs
+ Time since system start [us]
+ Elevator command [~]
+ Throttle command [~]
+ Throttle 2 command [~]
+ Left aileron command [~]
+ Right aileron command [~]
+ Rudder command [~]
+ Off-board computer status
+
+
+ Atmospheric sensors (temperature, humidity, ...)
+ Ambient temperature [degrees Celsius]
+ Relative humidity [%]
+
+
+ Battery pack monitoring data for Li-Ion batteries
+ Battery pack temperature in [deg C]
+ Battery pack voltage in [mV]
+ Battery pack current in [mA]
+ Battery pack state-of-charge
+ Battery monitor status report bits in Hex
+ Battery monitor serial number in Hex
+ Battery monitor sensor host FET control in Hex
+ Battery pack cell 1 voltage in [mV]
+ Battery pack cell 2 voltage in [mV]
+ Battery pack cell 3 voltage in [mV]
+ Battery pack cell 4 voltage in [mV]
+ Battery pack cell 5 voltage in [mV]
+ Battery pack cell 6 voltage in [mV]
+
+
+ Fixed-wing soaring (i.e. thermal seeking) data
+ Timestamp [ms]
+ Timestamp since last mode change[ms]
+ Thermal core updraft strength [m/s]
+ Thermal radius [m]
+ Thermal center latitude [deg]
+ Thermal center longitude [deg]
+ Variance W
+ Variance R
+ Variance Lat
+ Variance Lon
+ Suggested loiter radius [m]
+ Suggested loiter direction
+ Distance to soar point [m]
+ Expected sink rate at current airspeed, roll and throttle [m/s]
+ Measurement / updraft speed at current/local airplane position [m/s]
+ Measurement / roll angle tracking error [deg]
+ Expected measurement 1
+ Expected measurement 2
+ Thermal drift (from estimator prediction step only) [m/s]
+ Thermal drift (from estimator prediction step only) [m/s]
+ Total specific energy change (filtered) [m/s]
+ Debug variable 1
+ Debug variable 2
+ Control Mode [-]
+ Data valid [-]
+
+
+ Monitoring of sensorpod status
+ Timestamp in linuxtime [ms] (since 1.1.1970)
+ Rate of ROS topic 1
+ Rate of ROS topic 2
+ Rate of ROS topic 3
+ Rate of ROS topic 4
+ Number of recording nodes
+ Temperature of sensorpod CPU in [deg C]
+ Free space available in recordings directory in [Gb] * 1e2
+
+
+ Monitoring of power board status
+ Timestamp
+ Power board status register
+ Power board leds status
+ Power board system voltage
+ Power board servo voltage
+ Power board left motor current sensor
+ Power board right motor current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board servo1 current sensor
+ Power board aux current sensor
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ardupilotmega.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ardupilotmega.xml
new file mode 100644
index 000000000..21f66ae50
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ardupilotmega.xml
@@ -0,0 +1,1545 @@
+
+
+ common.xml
+
+
+ uAvionix.xml
+
+ 2
+
+
+
+
+
+ Mission command to operate EPM gripper
+ gripper number (a number from 1 to max number of grippers on the vehicle)
+ gripper action (0=release, 1=grab. See GRIPPER_ACTIONS enum)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Enable/disable autotune
+ enable (1: enable, 0:disable)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to wait for an altitude or downwards vertical speed. This is meant for high altitude balloon launches, allowing the aircraft to be idle until either an altitude is reached or a negative vertical speed is reached (indicating early balloon burst). The wiggle time is how often to wiggle the control surfaces to prevent them seizing up.
+ altitude (m)
+ descent speed (m/s)
+ Wiggle Time (s)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ A system wide power-off event has been initiated.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ FLY button has been clicked.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ FLY button has been held for 1.5 seconds.
+ Takeoff altitude
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ PAUSE button has been clicked.
+ 1 if Solo is in a shot mode, 0 otherwise
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Automatically retry on failure (0=no retry, 1=retry).
+ Save without user input (0=require input, 1=autosave).
+ Delay (seconds)
+ Autoreboot (0=user reboot, 1=autoreboot)
+ Empty
+ Empty
+
+
+
+ Initiate a magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Cancel a running magnetometer calibration
+ uint8_t bitmask of magnetometers (0 means all)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reply with the version banner
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Causes the gimbal to reset and boot as if it was just powered on
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Command autopilot to get into factory test/diagnostic mode
+ 0 means get out of test mode, 1 means get into test mode
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reports progress and success or failure of gimbal axis calibration procedure
+ Gimbal axis we're reporting calibration progress for
+ Current calibration progress for this axis, 0x64=100%
+ Status of the calibration
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Starts commutation calibration on the gimbal
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Erases gimbal application and parameters
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+ Magic number
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+ a limit has been breached
+
+
+
+ taking action eg. RTL
+
+
+
+ we're no longer in breach of a limit
+
+
+
+
+
+
+ pre-initialization
+
+
+
+ disabled
+
+
+
+ checking limits
+
+
+
+
+
+ Flags in RALLY_POINT message
+
+ Flag set when requiring favorable winds for landing.
+
+
+
+ Flag set when plane is to immediately descend to break altitude and land without GCS intervention. Flag not set when plane is to loiter at Rally point until commanded to land.
+
+
+
+
+
+
+ Disable parachute release
+
+
+
+ Enable parachute release
+
+
+
+ Release parachute
+
+
+
+
+
+ Gripper actions.
+
+ gripper release of cargo
+
+
+
+ gripper grabs onto cargo
+
+
+
+
+
+
+ Camera heartbeat, announce camera component ID at 1hz
+
+
+
+ Camera image triggered
+
+
+
+ Camera connection lost
+
+
+
+ Camera unknown error
+
+
+
+ Camera battery low. Parameter p1 shows reported voltage
+
+
+
+ Camera storage low. Parameter p1 shows reported shots remaining
+
+
+
+ Camera storage low. Parameter p1 shows reported video minutes remaining
+
+
+
+
+
+
+ Shooting photos, not video
+
+
+
+ Shooting video, not stills
+
+
+
+ Unable to achieve requested exposure (e.g. shutter speed too low)
+
+
+
+ Closed loop feedback from camera, we know for sure it has successfully taken a picture
+
+
+
+ Open loop camera, an image trigger has been requested but we can't know for sure it has successfully taken a picture
+
+
+
+
+
+
+ Gimbal is powered on but has not started initializing yet
+
+
+
+ Gimbal is currently running calibration on the pitch axis
+
+
+
+ Gimbal is currently running calibration on the roll axis
+
+
+
+ Gimbal is currently running calibration on the yaw axis
+
+
+
+ Gimbal has finished calibrating and initializing, but is relaxed pending reception of first rate command from copter
+
+
+
+ Gimbal is actively stabilizing
+
+
+
+ Gimbal is relaxed because it missed more than 10 expected rate command messages in a row. Gimbal will move back to active mode when it receives a new rate command
+
+
+
+
+
+ Gimbal yaw axis
+
+
+
+ Gimbal pitch axis
+
+
+
+ Gimbal roll axis
+
+
+
+
+
+ Axis calibration is in progress
+
+
+
+ Axis calibration succeeded
+
+
+
+ Axis calibration failed
+
+
+
+
+
+ Whether or not this axis requires calibration is unknown at this time
+
+
+
+ This axis requires calibration
+
+
+
+ This axis does not require calibration
+
+
+
+
+
+
+ No GoPro connected
+
+
+
+ The detected GoPro is not HeroBus compatible
+
+
+
+ A HeroBus compatible GoPro is connected
+
+
+
+ An unrecoverable error was encountered with the connected GoPro, it may require a power cycle
+
+
+
+
+
+
+ GoPro is currently recording
+
+
+
+
+
+ The write message with ID indicated succeeded
+
+
+
+ The write message with ID indicated failed
+
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (___/Set)
+
+
+
+ (Get/___)
+
+
+
+ (Get/___)
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set)
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set) Hero 3+ Only
+
+
+
+ (Get/Set)
+
+
+
+
+ (Get/Set)
+
+
+
+
+
+ Video mode
+
+
+
+ Photo mode
+
+
+
+ Burst mode, hero 3+ only
+
+
+
+ Time lapse mode, hero 3+ only
+
+
+
+ Multi shot mode, hero 4 only
+
+
+
+ Playback mode, hero 4 only, silver only except when LCD or HDMI is connected to black
+
+
+
+ Playback mode, hero 4 only
+
+
+
+ Mode not yet known
+
+
+
+
+
+ 848 x 480 (480p)
+
+
+
+ 1280 x 720 (720p)
+
+
+
+ 1280 x 960 (960p)
+
+
+
+ 1920 x 1080 (1080p)
+
+
+
+ 1920 x 1440 (1440p)
+
+
+
+ 2704 x 1440 (2.7k-17:9)
+
+
+
+ 2704 x 1524 (2.7k-16:9)
+
+
+
+ 2704 x 2028 (2.7k-4:3)
+
+
+
+ 3840 x 2160 (4k-16:9)
+
+
+
+ 4096 x 2160 (4k-17:9)
+
+
+
+ 1280 x 720 (720p-SuperView)
+
+
+
+ 1920 x 1080 (1080p-SuperView)
+
+
+
+ 2704 x 1520 (2.7k-SuperView)
+
+
+
+ 3840 x 2160 (4k-SuperView)
+
+
+
+
+
+ 12 FPS
+
+
+
+ 15 FPS
+
+
+
+ 24 FPS
+
+
+
+ 25 FPS
+
+
+
+ 30 FPS
+
+
+
+ 48 FPS
+
+
+
+ 50 FPS
+
+
+
+ 60 FPS
+
+
+
+ 80 FPS
+
+
+
+ 90 FPS
+
+
+
+ 100 FPS
+
+
+
+ 120 FPS
+
+
+
+ 240 FPS
+
+
+
+ 12.5 FPS
+
+
+
+
+
+ 0x00: Wide
+
+
+
+ 0x01: Medium
+
+
+
+ 0x02: Narrow
+
+
+
+
+
+ 0=NTSC, 1=PAL
+
+
+
+
+
+ 5MP Medium
+
+
+
+ 7MP Medium
+
+
+
+ 7MP Wide
+
+
+
+ 10MP Wide
+
+
+
+ 12MP Wide
+
+
+
+
+
+ Auto
+
+
+
+ 3000K
+
+
+
+ 5500K
+
+
+
+ 6500K
+
+
+
+ Camera Raw
+
+
+
+
+
+ Auto
+
+
+
+ Neutral
+
+
+
+
+
+ ISO 400
+
+
+
+ ISO 800 (Only Hero 4)
+
+
+
+ ISO 1600
+
+
+
+ ISO 3200 (Only Hero 4)
+
+
+
+ ISO 6400
+
+
+
+
+
+ Low Sharpness
+
+
+
+ Medium Sharpness
+
+
+
+ High Sharpness
+
+
+
+
+
+ -5.0 EV (Hero 3+ Only)
+
+
+
+ -4.5 EV (Hero 3+ Only)
+
+
+
+ -4.0 EV (Hero 3+ Only)
+
+
+
+ -3.5 EV (Hero 3+ Only)
+
+
+
+ -3.0 EV (Hero 3+ Only)
+
+
+
+ -2.5 EV (Hero 3+ Only)
+
+
+
+ -2.0 EV
+
+
+
+ -1.5 EV
+
+
+
+ -1.0 EV
+
+
+
+ -0.5 EV
+
+
+
+ 0.0 EV
+
+
+
+ +0.5 EV
+
+
+
+ +1.0 EV
+
+
+
+ +1.5 EV
+
+
+
+ +2.0 EV
+
+
+
+ +2.5 EV (Hero 3+ Only)
+
+
+
+ +3.0 EV (Hero 3+ Only)
+
+
+
+ +3.5 EV (Hero 3+ Only)
+
+
+
+ +4.0 EV (Hero 3+ Only)
+
+
+
+ +4.5 EV (Hero 3+ Only)
+
+
+
+ +5.0 EV (Hero 3+ Only)
+
+
+
+
+
+ Charging disabled
+
+
+
+ Charging enabled
+
+
+
+
+
+ Unknown gopro model
+
+
+
+ Hero 3+ Silver (HeroBus not supported by GoPro)
+
+
+
+ Hero 3+ Black
+
+
+
+ Hero 4 Silver
+
+
+
+ Hero 4 Black
+
+
+
+
+
+ 3 Shots / 1 Second
+
+
+
+ 5 Shots / 1 Second
+
+
+
+ 10 Shots / 1 Second
+
+
+
+ 10 Shots / 2 Second
+
+
+
+ 10 Shots / 3 Second (Hero 4 Only)
+
+
+
+ 30 Shots / 1 Second
+
+
+
+ 30 Shots / 2 Second
+
+
+
+ 30 Shots / 3 Second
+
+
+
+ 30 Shots / 6 Second
+
+
+
+
+
+
+ LED patterns off (return control to regular vehicle control)
+
+
+
+ LEDs show pattern during firmware update
+
+
+
+ Custom Pattern using custom bytes fields
+
+
+
+
+
+ Flags in EKF_STATUS message
+
+ set if EKF's attitude estimate is good
+
+
+
+ set if EKF's horizontal velocity estimate is good
+
+
+
+ set if EKF's vertical velocity estimate is good
+
+
+
+ set if EKF's horizontal position (relative) estimate is good
+
+
+
+ set if EKF's horizontal position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (absolute) estimate is good
+
+
+
+ set if EKF's vertical position (above ground) estimate is good
+
+
+
+ EKF is in constant position mode and does not know it's absolute or relative position
+
+
+
+ set if EKF's predicted horizontal position (relative) estimate is good
+
+
+
+ set if EKF's predicted horizontal position (absolute) estimate is good
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Special ACK block numbers control activation of dataflash log streaming
+
+
+
+ UAV to stop sending DataFlash blocks
+
+
+
+
+ UAV to start sending DataFlash blocks
+
+
+
+
+
+
+ Possible remote log data block statuses
+
+ This block has NOT been received
+
+
+
+ This block has been received
+
+
+
+
+
+
+ Offsets and calibrations values for hardware sensors. This makes it easier to debug the calibration process.
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+ magnetic declination (radians)
+ raw pressure from barometer
+ raw temperature from barometer
+ gyro X calibration
+ gyro Y calibration
+ gyro Z calibration
+ accel X calibration
+ accel Y calibration
+ accel Z calibration
+
+
+
+ Deprecated. Use MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS instead. Set the magnetometer offsets
+ System ID
+ Component ID
+ magnetometer X offset
+ magnetometer Y offset
+ magnetometer Z offset
+
+
+
+ state of APM memory
+ heap top
+ free memory
+
+ free memory (32 bit)
+
+
+
+ raw ADC output
+ ADC output 1
+ ADC output 2
+ ADC output 3
+ ADC output 4
+ ADC output 5
+ ADC output 6
+
+
+
+
+ Configure on-board Camera Control System.
+ System ID
+ Component ID
+ Mode enumeration from 1 to N //P, TV, AV, M, Etc (0 means ignore)
+ Divisor number //e.g. 1000 means 1/1000 (0 means ignore)
+ F stop number x 10 //e.g. 28 means 2.8 (0 means ignore)
+ ISO enumeration from 1 to N //e.g. 80, 100, 200, Etc (0 means ignore)
+ Exposure type enumeration from 1 to N (0 means ignore)
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+ Control on-board Camera Control System to take shots.
+ System ID
+ Component ID
+ 0: stop, 1: start or keep it up //Session control e.g. show/hide lens
+ 1 to N //Zoom's absolute position (0 means ignore)
+ -100 to 100 //Zooming step value to offset zoom from the current position
+ 0: unlock focus or keep unlocked, 1: lock focus or keep locked, 3: re-lock focus
+ 0: ignore, 1: shot or start filming
+ Command Identity (incremental loop: 0 to 255)//A command sent multiple times will be executed or pooled just once
+ Extra parameters enumeration (0 means ignore)
+ Correspondent value to given extra_param
+
+
+
+
+ Message to configure a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ mount operating mode (see MAV_MOUNT_MODE enum)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+ (1 = yes, 0 = no)
+
+
+
+ Message to control a camera mount, directional antenna, etc.
+ System ID
+ Component ID
+ pitch(deg*100) or lat, depending on mount mode
+ roll(deg*100) or lon depending on mount mode
+ yaw(deg*100) or alt (in cm) depending on mount mode
+ if "1" it will save current trimmed position on EEPROM (just valid for NEUTRAL and LANDING)
+
+
+
+ Message with some status from APM to GCS about camera or antenna mount
+ System ID
+ Component ID
+ pitch(deg*100)
+ roll(deg*100)
+ yaw(deg*100)
+
+
+
+
+ A fence point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+ total number of points (for sanity checking)
+ Latitude of point
+ Longitude of point
+
+
+
+ Request a current fence point from MAV
+ System ID
+ Component ID
+ point index (first point is 1, 0 is for return point)
+
+
+
+ Status of geo-fencing. Sent in extended status stream when fencing enabled
+ 0 if currently inside fence, 1 if outside
+ number of fence breaches
+ last breach type (see FENCE_BREACH_* enum)
+ time of last breach in milliseconds since boot
+
+
+
+ Status of DCM attitude estimator
+ X gyro drift estimate rad/s
+ Y gyro drift estimate rad/s
+ Z gyro drift estimate rad/s
+ average accel_weight
+ average renormalisation value
+ average error_roll_pitch value
+ average error_yaw value
+
+
+
+ Status of simulation environment, if used
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+ Status of key hardware
+ board voltage (mV)
+ I2C error count
+
+
+
+ Status generated by radio
+ local signal strength
+ remote signal strength
+ how full the tx buffer is as a percentage
+ background noise level
+ remote background noise level
+ receive errors
+ count of error corrected packets
+
+
+
+
+ Status of AP_Limits. Sent in extended status stream when AP_Limits is enabled
+ state of AP_Limits, (see enum LimitState, LIMITS_STATE)
+ time of last breach in milliseconds since boot
+ time of last recovery action in milliseconds since boot
+ time of last successful recovery in milliseconds since boot
+ time of last all-clear in milliseconds since boot
+ number of fence breaches
+ AP_Limit_Module bitfield of enabled modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of required modules, (see enum moduleid or LIMIT_MODULE)
+ AP_Limit_Module bitfield of triggered modules, (see enum moduleid or LIMIT_MODULE)
+
+
+
+ Wind estimation
+ wind direction that wind is coming from (degrees)
+ wind speed in ground plane (m/s)
+ vertical wind speed (m/s)
+
+
+
+ Data packet, size 16
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 32
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 64
+ data type
+ data length
+ raw data
+
+
+
+ Data packet, size 96
+ data type
+ data length
+ raw data
+
+
+
+ Rangefinder reporting
+ distance in meters
+ raw voltage if available, zero otherwise
+
+
+
+ Airspeed auto-calibration
+ GPS velocity north m/s
+ GPS velocity east m/s
+ GPS velocity down m/s
+ Differential pressure pascals
+ Estimated to true airspeed ratio
+ Airspeed ratio
+ EKF state x
+ EKF state y
+ EKF state z
+ EKF Pax
+ EKF Pby
+ EKF Pcz
+
+
+
+
+ A rally point. Used to set a point when from GCS -> MAV. Also used to return a point from MAV -> GCS
+ System ID
+ Component ID
+ point index (first point is 0)
+ total number of points (for sanity checking)
+ Latitude of point in degrees * 1E7
+ Longitude of point in degrees * 1E7
+ Transit / loiter altitude in meters relative to home
+
+ Break altitude in meters relative to home
+ Heading to aim for when landing. In centi-degrees.
+ See RALLY_FLAGS enum for definition of the bitmask.
+
+
+
+ Request a current rally point from MAV. MAV should respond with a RALLY_POINT message. MAV should not respond if the request is invalid.
+ System ID
+ Component ID
+ point index (first point is 0)
+
+
+
+ Status of compassmot calibration
+ throttle (percent*10)
+ current (amps)
+ interference (percent)
+ Motor Compensation X
+ Motor Compensation Y
+ Motor Compensation Z
+
+
+
+
+ Status of secondary AHRS filter if available
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+
+
+
+
+ Camera Event
+ Image timestamp (microseconds since UNIX epoch, according to camera clock)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ See CAMERA_STATUS_TYPES enum for definition of the bitmask
+ Parameter 1 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 2 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 3 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+ Parameter 4 (meaning depends on event, see CAMERA_STATUS_TYPES enum)
+
+
+
+
+ Camera Capture Feedback
+ Image timestamp (microseconds since UNIX epoch), as passed in by CAMERA_STATUS message (or autopilot if no CCB)
+ System ID
+
+ Camera ID
+
+ Image index
+
+ Latitude in (deg * 1E7)
+ Longitude in (deg * 1E7)
+ Altitude Absolute (meters AMSL)
+ Altitude Relative (meters above HOME location)
+ Camera Roll angle (earth frame, degrees, +-180)
+
+ Camera Pitch angle (earth frame, degrees, +-180)
+
+ Camera Yaw (earth frame, degrees, 0-360, true)
+
+ Focal Length (mm)
+
+ See CAMERA_FEEDBACK_FLAGS enum for definition of the bitmask
+
+
+
+
+ 2nd Battery status
+ voltage in millivolts
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+
+
+
+ Status of third AHRS filter if available. This is for ANU research group (Ali and Sean)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Altitude (MSL)
+ Latitude in degrees * 1E7
+ Longitude in degrees * 1E7
+ test variable1
+ test variable2
+ test variable3
+ test variable4
+
+
+
+ Request the autopilot version from the system/component.
+ System ID
+ Component ID
+
+
+
+
+ Send a block of log data to remote location
+ System ID
+ Component ID
+ log data block sequence number
+ log data block
+
+
+
+ Send Status of each log block that autopilot board might have sent
+ System ID
+ Component ID
+ log data block sequence number
+ log data block status
+
+
+
+ Control vehicle LEDs
+ System ID
+ Component ID
+ Instance (LED instance to control or 255 for all LEDs)
+ Pattern (see LED_PATTERN_ENUM)
+ Custom Byte Length
+ Custom Bytes
+
+
+
+ Reports progress of compass calibration.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ Attempt number
+ Completion percentage
+ Bitmask of sphere sections (see http://en.wikipedia.org/wiki/Geodesic_grid)
+ Body frame direction vector for display
+ Body frame direction vector for display
+ Body frame direction vector for display
+
+
+
+ Reports results of completed compass calibration. Sent until MAG_CAL_ACK received.
+ Compass being calibrated
+ Bitmask of compasses being calibrated
+ Status (see MAG_CAL_STATUS enum)
+ 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters
+ RMS milligauss residuals
+ X offset
+ Y offset
+ Z offset
+ X diagonal (matrix 11)
+ Y diagonal (matrix 22)
+ Z diagonal (matrix 33)
+ X off-diagonal (matrix 12 and 21)
+ Y off-diagonal (matrix 13 and 31)
+ Z off-diagonal (matrix 32 and 23)
+
+
+
+
+ EKF Status message including flags and variances
+ Flags
+
+ Velocity variance
+
+ Horizontal Position variance
+ Vertical Position variance
+ Compass variance
+ Terrain Altitude variance
+
+
+
+
+ PID tuning information
+ axis
+ desired rate (degrees/s)
+ achieved rate (degrees/s)
+ FF component
+ P component
+ I component
+ D component
+
+
+
+ 3 axis gimbal mesuraments
+ System ID
+ Component ID
+ Time since last update (seconds)
+ Delta angle X (radians)
+ Delta angle Y (radians)
+ Delta angle X (radians)
+ Delta velocity X (m/s)
+ Delta velocity Y (m/s)
+ Delta velocity Z (m/s)
+ Joint ROLL (radians)
+ Joint EL (radians)
+ Joint AZ (radians)
+
+
+
+ Control message for rate gimbal
+ System ID
+ Component ID
+ Demanded angular rate X (rad/s)
+ Demanded angular rate Y (rad/s)
+ Demanded angular rate Z (rad/s)
+
+
+
+ 100 Hz gimbal torque command telemetry
+ System ID
+ Component ID
+ Roll Torque Command
+ Elevation Torque Command
+ Azimuth Torque Command
+
+
+
+
+ Heartbeat from a HeroBus attached GoPro
+ Status
+ Current capture mode
+ additional status bits
+
+
+
+
+ Request a GOPRO_COMMAND response from the GoPro
+ System ID
+ Component ID
+ Command ID
+
+
+
+ Response from a GOPRO_COMMAND get request
+ Command ID
+ Status
+ Value
+
+
+
+ Request to set a GOPRO_COMMAND with a desired
+ System ID
+ Component ID
+ Command ID
+ Value
+
+
+
+ Response from a GOPRO_COMMAND set request
+ Command ID
+ Status
+
+
+
+
+ RPM sensor output
+ RPM Sensor1
+ RPM Sensor2
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/autoquad.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/autoquad.xml
new file mode 100644
index 000000000..8c224783b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/autoquad.xml
@@ -0,0 +1,169 @@
+
+
+ common.xml
+ 3
+
+
+ Track current version of these definitions (can be used by checking value of AUTOQUAD_MAVLINK_DEFS_VERSION_ENUM_END). Append a new entry for each published change.
+
+
+
+ Available operating modes/statuses for AutoQuad flight controller.
+ Bitmask up to 32 bits. Low side bits for base modes, high side for
+ additional active features/modifiers/constraints.
+
+ System is initializing
+
+
+
+ System is *armed* and standing by, with no throttle input and no autonomous mode
+
+
+ Flying (throttle input detected), assumed under manual control unless other mode bits are set
+
+
+ Altitude hold engaged
+
+
+ Position hold engaged
+
+
+ Externally-guided (eg. GCS) navigation mode
+
+
+ Autonomous mission execution mode
+
+
+
+ Ready but *not armed*
+
+
+ Calibration mode active
+
+
+
+ No valid control input (eg. no radio link)
+
+
+ Battery is low (stage 1 warning)
+
+
+ Battery is depleted (stage 2 warning)
+
+
+
+ Dynamic Velocity Hold is active (PH with proportional manual direction override)
+
+
+ ynamic Altitude Override is active (AH with proportional manual adjustment)
+
+
+
+ Craft is at ceiling altitude
+
+
+ Ceiling altitude is set
+
+
+ Heading-Free dynamic mode active
+
+
+ Heading-Free locked mode active
+
+
+ Automatic Return to Home is active
+
+
+ System is in failsafe recovery mode
+
+
+
+
+ Orbit a waypoint.
+ Orbit radius in meters
+ Loiter time in decimal seconds
+ Maximum horizontal speed in m/s
+ Desired yaw angle at waypoint
+ Latitude
+ Longitude
+ Altitude
+
+
+ Start/stop AutoQuad telemetry values stream.
+ Start or stop (1 or 0)
+ Stream frequency in us
+ Dataset ID (refer to aq_mavlink.h::mavlinkCustomDataSets enum in AQ flight controller code)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Request AutoQuad firmware version number.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+ Motor/ESC telemetry data.
+
+
+
+
+
+ Sends up to 20 raw float values.
+ Index of message
+ value1
+ value2
+ value3
+ value4
+ value5
+ value6
+ value7
+ value8
+ value9
+ value10
+ value11
+ value12
+ value13
+ value14
+ value15
+ value16
+ value17
+ value18
+ value19
+ value20
+
+
+ Sends ESC32 telemetry data for up to 4 motors. Multiple messages may be sent in sequence when system has > 4 motors. Data is described as follows:
+ // unsigned int state : 3;
+ // unsigned int vin : 12; // x 100
+ // unsigned int amps : 14; // x 100
+ // unsigned int rpm : 15;
+ // unsigned int duty : 8; // x (255/100)
+ // - Data Version 2 -
+ // unsigned int errors : 9; // Bad detects error count
+ // - Data Version 3 -
+ // unsigned int temp : 9; // (Deg C + 32) * 4
+ // unsigned int errCode : 3;
+
+ Timestamp of the component clock since boot time in ms.
+ Sequence number of message (first set of 4 motors is #1, next 4 is #2, etc).
+ Total number of active ESCs/motors on the system.
+ Number of active ESCs in this sequence (1 through this many array members will be populated with data)
+ ESC/Motor ID
+ Age of each ESC telemetry reading in ms compared to boot time. A value of 0xFFFF means timeout/no data.
+ Version of data structure (determines contents).
+ Data bits 1-32 for each ESC.
+ Data bits 33-64 for each ESC.
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/common.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/common.xml
new file mode 100644
index 000000000..8718cd7da
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/common.xml
@@ -0,0 +1,3716 @@
+
+
+ 3
+ 0
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ Reserved for future use.
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+ PX4 Autopilot - http://pixhawk.ethz.ch/px4/
+
+
+ SMACCMPilot - http://smaccmpilot.org
+
+
+ AutoQuad -- http://autoquad.org
+
+
+ Armazila -- http://armazila.com
+
+
+ Aerob -- http://aerob.ru
+
+
+ ASLUAV autopilot -- http://www.asl.ethz.ch
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Tricopter
+
+
+ Flapping wing
+
+
+ Kite
+
+
+ Onboard companion controller
+
+
+ Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.
+
+
+ Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.
+
+
+ Tiltrotor VTOL
+
+
+
+ VTOL reserved 2
+
+
+ VTOL reserved 3
+
+
+ VTOL reserved 4
+
+
+ VTOL reserved 5
+
+
+ Onboard gimbal
+
+
+ Onboard ADSB peripheral
+
+
+
+ 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.
+
+ development release
+
+
+ alpha release
+
+
+ beta release
+
+
+ release candidate
+
+
+ official stable release
+
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+ Override command, pauses current mission execution and moves immediately to a position
+
+ Hold at the current position.
+
+
+ Continue with the next item in mission execution.
+
+
+ Hold at the current position of the system
+
+
+ Hold at the position specified in the parameters of the DO_HOLD action
+
+
+
+ These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but it
+ simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.
+
+ System is not ready to fly, booting, calibrating, etc. No flag is set.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under assisted RC control.
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under manual (RC) control, no stabilization
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control, manual setpoint
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+ UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ On Screen Display (OSD) devices for video links
+
+
+ Generic autopilot peripheral component ID. Meant for devices that do not implement the parameter sub-protocol
+
+
+
+
+
+
+ These encode the sensors whose status is sent as part of the SYS_STATUS message.
+
+ 0x01 3D gyro
+
+
+ 0x02 3D accelerometer
+
+
+ 0x04 3D magnetometer
+
+
+ 0x08 absolute pressure
+
+
+ 0x10 differential pressure
+
+
+ 0x20 GPS
+
+
+ 0x40 optical flow
+
+
+ 0x80 computer vision position
+
+
+ 0x100 laser based position
+
+
+ 0x200 external ground truth (Vicon or Leica)
+
+
+ 0x400 3D angular rate control
+
+
+ 0x800 attitude stabilization
+
+
+ 0x1000 yaw position
+
+
+ 0x2000 z/altitude control
+
+
+ 0x4000 x/y position control
+
+
+ 0x8000 motor outputs / control
+
+
+ 0x10000 rc receiver
+
+
+ 0x20000 2nd 3D gyro
+
+
+ 0x40000 2nd 3D accelerometer
+
+
+ 0x80000 2nd 3D magnetometer
+
+
+ 0x100000 geofence
+
+
+ 0x200000 AHRS subsystem health
+
+
+ 0x400000 Terrain subsystem health
+
+
+ 0x800000 Motors are reversed
+
+
+ 0x1000000 Logging
+
+
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Local coordinate frame, Z-up (x: north, y: east, z: down).
+
+
+ NOT a coordinate frame, indicates a mission command.
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Local coordinate frame, Z-down (x: east, y: north, z: up)
+
+
+ Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)
+
+
+ Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.
+
+
+ Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.
+
+
+ Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.
+
+
+ Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+ Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable fenced mode
+
+
+ Switched to guided mode to return point (fence point 0)
+
+
+ Report fence breach, but don't take action
+
+
+ Switched to guided mode to return point (fence point 0) with manual throttle control
+
+
+ Switch to RTL (return to launch) mode and head for the return point.
+
+
+
+
+
+ No last fence breach
+
+
+ Breached minimum altitude
+
+
+ Breached maximum altitude
+
+
+ Breached fence boundary
+
+
+
+
+ Enumeration of possible mount operation modes
+ Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization
+ Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.
+ Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start RC Roll,Pitch,Yaw control with stabilization
+ Load neutral position and start to point to Lat,Lon,Alt
+
+
+ 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.
+
+ Navigate to MISSION.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Acceptance radius in meters (if the sphere with this radius is hit, the MISSION counts as reached)
+ 0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.
+ Desired yaw angle at MISSION (rotary wing)
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION an unlimited amount of time
+ Empty
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X turns
+ Turns
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Loiter around this MISSION for X seconds
+ Seconds (decimal)
+ Empty
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location. Else, this is desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Return to launch location
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Land at location
+ Abort Alt
+ Empty
+ Empty
+ Desired yaw angle
+ Latitude
+ Longitude
+ Altitude
+
+
+ Takeoff from ground / hand
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor
+ Empty
+ Empty
+ Yaw angle (if magnetometer present), ignored without magnetometer
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land at local position (local frame only)
+ Landing target number (if available)
+ Maximum accepted offset from desired landing position [m] - 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
+ Landing descend rate [ms^-1]
+ Desired yaw angle [rad]
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis / ground level position [m]
+
+
+ Takeoff from local position (local frame only)
+ Minimum pitch (if airspeed sensor present), desired pitch without sensor [rad]
+ Empty
+ Takeoff ascend rate [ms^-1]
+ Yaw angle [rad] (if magnetometer or another yaw estimation source present), ignored without one of these
+ Y-axis position [m]
+ X-axis position [m]
+ Z-axis position [m]
+
+
+ Vehicle following, i.e. this waypoint represents the position of a moving vehicle
+ Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation
+ Ground speed of vehicle to be followed
+ Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise
+ Desired yaw angle.
+ Latitude
+ Longitude
+ Altitude
+
+
+ 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.
+ 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Desired altitude in meters
+
+
+ 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.
+ Heading Required (0 = False)
+ Radius in meters. If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.
+ Empty
+ Forward moving aircraft this sets exit xtrack location: 0 for center of loiter wp, 1 for exit location
+ Latitude
+ Longitude
+ Altitude
+
+
+ Being following a target
+ System ID (the system ID of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode
+ RESERVED
+ RESERVED
+ altitude flag: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home
+ altitude
+ RESERVED
+ TTL in seconds in which the MAV should go to the default position hold mode after a message rx timeout
+
+
+ Reposition the MAV after a follow target command has been sent
+ Camera q1 (where 0 is on the ray from the camera to the tracking device)
+ Camera q2
+ Camera q3
+ Camera q4
+ altitude offset from target (m)
+ X offset from target (m)
+ Y offset from target (m)
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+ Control autonomous path planning on the MAV.
+ 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning
+ 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
+ Empty
+ Yaw angle at goal, in compass degrees, [0..360]
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Navigate to MISSION using a spline path.
+ Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)
+ Empty
+ Empty
+ Empty
+ Latitude/X of goal
+ Longitude/Y of goal
+ Altitude/Z of goal
+
+
+ Takeoff from ground using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+ Land using VTOL mode
+ Empty
+ Empty
+ Empty
+ Yaw angle in degrees
+ Latitude
+ Longitude
+ Altitude
+
+
+
+
+
+ hand control over to an external controller
+ On / Off (> 0.5f on)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay the next navigation command a number of seconds or until a specified time
+ Delay in seconds (decimal, -1 to enable time-of-day fields)
+ hour (24h format, UTC, -1 to ignore)
+ minute (24h format, UTC, -1 to ignore)
+ second (24h format, UTC)
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Delay mission state machine.
+ Delay in seconds (decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Ascend/descend at rate. Delay mission state machine until desired altitude reached.
+ Descent / Ascend rate (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Finish Altitude
+
+
+ Delay mission state machine until within desired distance of next NAV point.
+ Distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Reach a certain target angle.
+ target angle: [0-360], 0 is north
+ speed during yaw change:[deg per second]
+ direction: negative: counter clockwise, positive: clockwise [-1,1]
+ relative offset or absolute angle: [ 1,0]
+ Empty
+ Empty
+ Empty
+
+
+ NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set system mode.
+ Mode, as defined by ENUM MAV_MODE
+ Custom mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Jump to the desired command in the mission list. Repeat this action only the specified number of times
+ Sequence number
+ Repeat count
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change speed and/or throttle set points.
+ Speed type (0=Airspeed, 1=Ground Speed)
+ Speed (m/s, -1 indicates no change)
+ Throttle ( Percent, -1 indicates no change)
+ absolute or relative [0,1]
+ Empty
+ Empty
+ Empty
+
+
+ Changes the home location either to the current location or a specified location.
+ Use current (1=use current location, 0=use specified location)
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Altitude
+
+
+ Set a system parameter. Caution! Use of this command requires knowledge of the numeric enumeration value of the parameter.
+ Parameter number
+ Parameter value
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a relay to a condition.
+ Relay number
+ Setting (1=on, 0=off, others possible depending on system hardware)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a relay on and off for a desired number of cyles with a desired period.
+ Relay number
+ Cycle count
+ Cycle time (seconds, decimal)
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Set a servo to a desired PWM value.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.
+ Servo number
+ PWM (microseconds, 1000 to 2000 typical)
+ Cycle count
+ Cycle time (seconds)
+ Empty
+ Empty
+ Empty
+
+
+ Terminate flight immediately
+ Flight termination activated if > 0.5
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Change altitude set point.
+ Altitude in meters
+ Mav frame of new altitude (see MAV_FRAME)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.
+ Empty
+ Empty
+ Empty
+ Empty
+ Latitude
+ Longitude
+ Empty
+
+
+ Mission command to perform a landing from a rally point.
+ Break altitude (meters)
+ Landing speed (m/s)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Mission command to safely abort an autonmous landing.
+ Altitude (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Reposition the vehicle to a specific WGS84 global position.
+ Ground speed, less than 0 (-1) for default
+ Bitmask of option flags, see the MAV_DO_REPOSITION_FLAGS enum.
+ Reserved
+ Yaw heading, NaN for unchanged. For planes indicates loiter direction (0: clockwise, 1: counter clockwise)
+ Latitude (deg * 1E7)
+ Longitude (deg * 1E7)
+ Altitude (meters)
+
+
+ If in a GPS controlled position mode, hold the current position or continue.
+ 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.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Set moving direction to forward or reverse.
+ Direction (0=Forward, 1=Reverse)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Control onboard camera system.
+ Camera ID (-1 for all)
+ Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Transmission mode: 0: video stream, >0: single images every n seconds (decimal)
+ Recording: 0: disabled, 1: enabled compressed, 2: enabled raw
+ Empty
+ Empty
+ Empty
+
+
+ Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.
+ Region of intereset mode. (see MAV_ROI enum)
+ MISSION index/ target ID. (see MAV_ROI enum)
+ ROI index (allows a vehicle to manage multiple ROI's)
+ Empty
+ x the location of the fixed ROI (see MAV_FRAME)
+ y
+ z
+
+
+
+
+ Mission command to configure an on-board camera controller system.
+ Modes: P, TV, AV, M, Etc
+ Shutter speed: Divisor number for one second
+ Aperture: F stop number
+ ISO number e.g. 80, 100, 200, Etc
+ Exposure type enumerator
+ Command Identity
+ Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)
+
+
+
+ Mission command to control an on-board camera controller system.
+ Session control e.g. show/hide lens
+ Zoom's absolute position
+ Zooming step value to offset zoom from the current position
+ Focus Locking, Unlocking or Re-locking
+ Shooting Command
+ Command Identity
+ Empty
+
+
+
+
+ Mission command to configure a camera or antenna mount
+ Mount operation mode (see MAV_MOUNT_MODE enum)
+ stabilize roll? (1 = yes, 0 = no)
+ stabilize pitch? (1 = yes, 0 = no)
+ stabilize yaw? (1 = yes, 0 = no)
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to control a camera or antenna mount
+ pitch or lat in degrees, depending on mount mode.
+ roll or lon in degrees depending on mount mode
+ yaw or alt (in meters) depending on mount mode
+ reserved
+ reserved
+ reserved
+ MAV_MOUNT_MODE enum value
+
+
+
+ Mission command to set CAM_TRIGG_DIST for this flight
+ Camera trigger distance (meters)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to enable the geofence
+ enable? (0=disable, 1=enable, 2=disable_floor_only)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to trigger a parachute
+ action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Mission command to perform motor test
+ motor sequence number (a number from 1 to max number of motors on the vehicle)
+ throttle type (0=throttle percentage, 1=PWM, 2=pilot throttle channel pass-through. See MOTOR_TEST_THROTTLE_TYPE enum)
+ throttle
+ timeout (in seconds)
+ Empty
+ Empty
+ Empty
+
+
+
+ Change to/from inverted flight
+ inverted (0=normal, 1=inverted)
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ Sets a desired vehicle turn angle and thrust change
+ yaw angle to adjust steering by in centidegress
+ Thrust - normalized to -2 .. 2
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+ Mission command to control a camera or antenna mount, using a quaternion as reference.
+ q1 - quaternion param #1, w (1 in null-rotation)
+ q2 - quaternion param #2, x (0 in null-rotation)
+ q3 - quaternion param #3, y (0 in null-rotation)
+ q4 - quaternion param #4, z (0 in null-rotation)
+ Empty
+ Empty
+ Empty
+
+
+
+ set id of master controller
+ System ID
+ Component ID
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ set limits for external control
+ timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout
+ absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit
+ absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit
+ horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit
+ Empty
+ Empty
+ Empty
+
+
+
+ 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
+ 0: Stop engine, 1:Start Engine
+ 0: Warm start, 1:Cold start. Controls use of choke where applicable
+ Height delay (meters). 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.
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+ NOP - This command is only used to mark the upper limit of the DO commands in the enumeration
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+ Trigger calibration. This command will be only accepted if in pre-flight mode.
+ Gyro calibration: 0: no, 1: yes
+ Magnetometer calibration: 0: no, 1: yes
+ Ground pressure: 0: no, 1: yes
+ Radio calibration: 0: no, 1: yes
+ Accelerometer calibration: 0: no, 1: yes
+ Compass/Motor interference calibration: 0: no, 1: yes
+ Empty
+
+
+ Set sensor offsets. This command will be only accepted if in pre-flight mode.
+ Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer
+ X axis offset (or generic dimension 1), in the sensor's raw units
+ Y axis offset (or generic dimension 2), in the sensor's raw units
+ Z axis offset (or generic dimension 3), in the sensor's raw units
+ Generic dimension 4, in the sensor's raw units
+ Generic dimension 5, in the sensor's raw units
+ Generic dimension 6, in the sensor's raw units
+
+
+ Trigger UAVCAN config. This command will be only accepted if in pre-flight mode.
+ 1: Trigger actuator ID assignment and direction mapping.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
+ Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: start logging with rate of param 3 in Hz (e.g. set to 1000 for 1000 Hz logging)
+ Reserved
+ Empty
+ Empty
+ Empty
+
+
+ Request the reboot or shutdown of system components.
+ 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.
+ 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.
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+ Reserved, send 0
+
+
+ Hold / continue the current action
+ MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan
+ MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position
+ MAV_FRAME coordinate frame of hold point
+ Desired yaw angle in degrees
+ Latitude / X position
+ Longitude / Y position
+ Altitude / Z position
+
+
+ start running a mission
+ first_item: the first mission item to run
+ last_item: the last mission item to run (after this item is run, the mission ends)
+
+
+ Arms / Disarms a component
+ 1 to arm, 0 to disarm
+
+
+ Request the home position from the vehicle.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+ Starts receiver pairing
+ 0:Spektrum
+ 0:Spektrum DSM2, 1:Spektrum DSMX
+
+
+ Request the interval between messages for a particular MAVLink message ID
+ The MAVLink message ID
+
+
+ Request the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM
+ The MAVLink message ID
+ The interval between two messages, in microseconds. Set to -1 to disable and 0 to request default rate.
+
+
+ Request autopilot capabilities
+ 1: Request autopilot version
+ Reserved (all remaining params)
+
+
+ Start image capture sequence
+ Duration between two consecutive pictures (in seconds)
+ Number of images to capture total - 0 for unlimited capture
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop image capture sequence
+ Reserved
+ Reserved
+
+
+
+ Enable or disable on-board camera triggering system.
+ Trigger enable/disable (0 for disable, 1 for start)
+ Shutter integration time (in ms)
+ Reserved
+
+
+
+ Starts video capture
+ Camera ID (0 for all cameras), 1 for first, 2 for second, etc.
+ Frames per second
+ Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)
+
+
+
+ Stop the current video capture
+ Reserved
+ Reserved
+
+
+
+ Create a panorama at the current position
+ Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)
+ Viewing angle vertical of panorama (in degrees)
+ Speed of the horizontal rotation (in degrees per second)
+ Speed of the vertical rotation (in degrees per second)
+
+
+
+ Request VTOL transition
+ The target VTOL state, as defined by ENUM MAV_VTOL_STATE. Only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.
+
+
+
+ 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 velocites along all three axes.
+
+
+
+
+ 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.
+
+ Radius of desired circle in CIRCLE_MODE
+ User defined
+ User defined
+ User defined
+ Unscaled target latitude of center of circle in CIRCLE_MODE
+ Unscaled target longitude of center of circle in CIRCLE_MODE
+
+
+
+
+
+
+ Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.
+ 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.
+ Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.
+ Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.
+ Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.
+ Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT
+ Altitude, in meters AMSL
+
+
+ Control the payload deployment.
+ Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+ Reserved
+
+
+
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined waypoint item. Ground Station will show the Vehicle as flying through this item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.
+ User defined
+ User defined
+ User defined
+ User defined
+ Latitude unscaled
+ Longitude unscaled
+ Altitude, in meters AMSL
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+ User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+ User defined
+
+
+
+
+ THIS INTERFACE IS DEPRECATED AS OF JULY 2015. Please use MESSAGE_INTERVAL instead. 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.
+
+ Enable all data streams
+
+
+ Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.
+
+
+ Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS
+
+
+ Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW
+
+
+ Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.
+
+
+ Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+ Dependent on the autopilot
+
+
+
+ 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).
+
+ No region of interest.
+
+
+ Point toward next MISSION.
+
+
+ Point toward given MISSION.
+
+
+ Point toward fixed location.
+
+
+ Point toward of given id.
+
+
+
+ ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.
+
+ Command / mission item is ok.
+
+
+ Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.
+
+
+ The system is refusing to accept this command from this source / communication partner.
+
+
+ Command or mission item is not supported, other commands would be accepted.
+
+
+ The coordinate frame of this command / mission item is not supported.
+
+
+ The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.
+
+
+ The X or latitude value is out of range.
+
+
+ The Y or longitude value is out of range.
+
+
+ The Z or altitude value is out of range.
+
+
+
+ Specifies the datatype of a MAVLink parameter.
+
+ 8-bit unsigned integer
+
+
+ 8-bit signed integer
+
+
+ 16-bit unsigned integer
+
+
+ 16-bit signed integer
+
+
+ 32-bit unsigned integer
+
+
+ 32-bit signed integer
+
+
+ 64-bit unsigned integer
+
+
+ 64-bit signed integer
+
+
+ 32-bit floating-point
+
+
+ 64-bit floating-point
+
+
+
+ result from a mavlink command
+
+ Command ACCEPTED and EXECUTED
+
+
+ Command TEMPORARY REJECTED/DENIED
+
+
+ Command PERMANENTLY DENIED
+
+
+ Command UNKNOWN/UNSUPPORTED
+
+
+ Command executed, but failed
+
+
+
+ result in a mavlink mission ack
+
+ mission accepted OK
+
+
+ generic error / not accepting mission commands at all right now
+
+
+ coordinate frame is not supported
+
+
+ command is not supported
+
+
+ mission item exceeds storage space
+
+
+ one of the parameters has an invalid value
+
+
+ param1 has an invalid value
+
+
+ param2 has an invalid value
+
+
+ param3 has an invalid value
+
+
+ param4 has an invalid value
+
+
+ x/param5 has an invalid value
+
+
+ y/param6 has an invalid value
+
+
+ param7 has an invalid value
+
+
+ received waypoint out of sequence
+
+
+ not accepting any mission commands from this communication partner
+
+
+
+ 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/.
+
+ System is unusable. This is a "panic" condition.
+
+
+ Action should be taken immediately. Indicates error in non-critical systems.
+
+
+ Action must be taken immediately. Indicates failure in a primary system.
+
+
+ Indicates an error in secondary/redundant systems.
+
+
+ Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.
+
+
+ An unusual event has occured, though not an error condition. This should be investigated for the root cause.
+
+
+ Normal operational messages. Useful for logging. No action is required for these messages.
+
+
+ Useful non-operational messages that can assist in debugging. These should not occur during normal operation.
+
+
+
+ Power supply status flags (bitmask)
+
+ main brick power supply valid
+
+
+ main servo power supply valid for FMU
+
+
+ USB power is connected
+
+
+ peripheral supply is in over-current state
+
+
+ hi-power peripheral supply is in over-current state
+
+
+ Power status has changed since boot
+
+
+
+ SERIAL_CONTROL device types
+
+ First telemetry port
+
+
+ Second telemetry port
+
+
+ First GPS port
+
+
+ Second GPS port
+
+
+ system shell
+
+
+
+ SERIAL_CONTROL flags (bitmask)
+
+ Set if this is a reply
+
+
+ Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message
+
+
+ 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
+
+
+ Block on writes to the serial port
+
+
+ Send multiple replies until port is drained
+
+
+
+ Enumeration of distance sensor types
+
+ Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units
+
+
+ Ultrasound rangefinder, e.g. MaxBotix units
+
+
+ Infrared rangefinder, e.g. Sharp units
+
+
+
+ Enumeration of sensor orientation, according to its rotations
+
+ Roll: 0, Pitch: 0, Yaw: 0
+
+
+ Roll: 0, Pitch: 0, Yaw: 45
+
+
+ Roll: 0, Pitch: 0, Yaw: 90
+
+
+ Roll: 0, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 0, Yaw: 180
+
+
+ Roll: 0, Pitch: 0, Yaw: 225
+
+
+ Roll: 0, Pitch: 0, Yaw: 270
+
+
+ Roll: 0, Pitch: 0, Yaw: 315
+
+
+ Roll: 180, Pitch: 0, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 45
+
+
+ Roll: 180, Pitch: 0, Yaw: 90
+
+
+ Roll: 180, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 180, Yaw: 0
+
+
+ Roll: 180, Pitch: 0, Yaw: 225
+
+
+ Roll: 180, Pitch: 0, Yaw: 270
+
+
+ Roll: 180, Pitch: 0, Yaw: 315
+
+
+ Roll: 90, Pitch: 0, Yaw: 0
+
+
+ Roll: 90, Pitch: 0, Yaw: 45
+
+
+ Roll: 90, Pitch: 0, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 135
+
+
+ Roll: 270, Pitch: 0, Yaw: 0
+
+
+ Roll: 270, Pitch: 0, Yaw: 45
+
+
+ Roll: 270, Pitch: 0, Yaw: 90
+
+
+ Roll: 270, Pitch: 0, Yaw: 135
+
+
+ Roll: 0, Pitch: 90, Yaw: 0
+
+
+ Roll: 0, Pitch: 270, Yaw: 0
+
+
+ Roll: 0, Pitch: 180, Yaw: 90
+
+
+ Roll: 0, Pitch: 180, Yaw: 270
+
+
+ Roll: 90, Pitch: 90, Yaw: 0
+
+
+ Roll: 180, Pitch: 90, Yaw: 0
+
+
+ Roll: 270, Pitch: 90, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 0
+
+
+ Roll: 270, Pitch: 180, Yaw: 0
+
+
+ Roll: 90, Pitch: 270, Yaw: 0
+
+
+ Roll: 180, Pitch: 270, Yaw: 0
+
+
+ Roll: 270, Pitch: 270, Yaw: 0
+
+
+ Roll: 90, Pitch: 180, Yaw: 90
+
+
+ Roll: 90, Pitch: 0, Yaw: 270
+
+
+ Roll: 315, Pitch: 315, Yaw: 315
+
+
+
+ Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.
+
+ Autopilot supports MISSION float message type.
+
+
+ Autopilot supports the new param float message type.
+
+
+ Autopilot supports MISSION_INT scaled integer message type.
+
+
+ Autopilot supports COMMAND_INT scaled integer message type.
+
+
+ Autopilot supports the new param union message type.
+
+
+ Autopilot supports the new FILE_TRANSFER_PROTOCOL message type.
+
+
+ Autopilot supports commanding attitude offboard.
+
+
+ Autopilot supports commanding position and velocity targets in local NED frame.
+
+
+ Autopilot supports commanding position and velocity targets in global scaled integers.
+
+
+ Autopilot supports terrain protocol / data handling.
+
+
+ Autopilot supports direct actuator control.
+
+
+ Autopilot supports the flight termination command.
+
+
+ Autopilot supports onboard compass calibration.
+
+
+ Autopilot supports mavlink version 2.
+
+
+
+ Enumeration of estimator types
+
+ This is a naive estimator without any real covariance feedback.
+
+
+ Computer vision based estimate. Might be up to scale.
+
+
+ Visual-inertial estimate.
+
+
+ Plain GPS estimate.
+
+
+ Estimator integrating GPS and inertial sensing.
+
+
+
+ Enumeration of battery types
+
+ Not specified.
+
+
+ Lithium polymer battery
+
+
+ Lithium-iron-phosphate battery
+
+
+ Lithium-ION battery
+
+
+ Nickel metal hydride battery
+
+
+
+ Enumeration of battery functions
+
+ Battery function is unknown
+
+
+ Battery supports all flight systems
+
+
+ Battery for the propulsion system
+
+
+ Avionics battery
+
+
+ Payload battery
+
+
+
+ Enumeration of VTOL states
+
+ MAV is not configured as VTOL
+
+
+ VTOL is in transition from multicopter to fixed-wing
+
+
+ VTOL is in transition from fixed-wing to multicopter
+
+
+ VTOL is in multicopter state
+
+
+ VTOL is in fixed-wing state
+
+
+
+ Enumeration of landed detector states
+
+ MAV landed state is unknown
+
+
+ MAV is landed (on ground)
+
+
+ MAV is in air
+
+
+
+ Enumeration of the ADSB altimeter types
+
+ Altitude reported from a Baro source using QNH reference
+
+
+ Altitude reported from a GNSS source
+
+
+
+ ADSB classification for the type of vehicle emitting the transponder signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ These flags indicate status such as data validity of each data source. Set = data valid
+
+
+
+
+
+
+
+
+
+ Bitmask of options for the MAV_CMD_DO_REPOSITION
+
+ The aircraft should immediately transition into guided. This should not be set for follow me applications
+
+
+
+
+ Flags in EKF_STATUS message
+
+ True if the attitude estimate is good
+
+
+
+ True if the horizontal velocity estimate is good
+
+
+
+ True if the vertical velocity estimate is good
+
+
+
+ True if the horizontal position (relative) estimate is good
+
+
+
+ True if the horizontal position (absolute) estimate is good
+
+
+
+ True if the vertical position (absolute) estimate is good
+
+
+
+ True if the vertical position (above ground) estimate is good
+
+
+
+ True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate
+
+
+
+ True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate
+
+
+
+ True if the EKF has detected a GPS glitch
+
+
+
+
+
+
+ throttle as a percentage from 0 ~ 100
+
+
+
+ throttle as an absolute PWM value (normally in range of 1000~2000)
+
+
+
+ throttle pass-through from pilot's transmitter
+
+
+
+
+
+
+ ignore altitude field
+
+
+ ignore hdop field
+
+
+ ignore vdop field
+
+
+ ignore horizontal velocity field (vn and ve)
+
+
+ ignore vertical velocity field (vd)
+
+
+ ignore speed accuracy field
+
+
+ ignore horizontal accuracy field
+
+
+ ignore vertical accuracy field
+
+
+
+ Possible actions an aircraft can take to avoid a collision.
+
+ Ignore any potential collisions
+
+
+ Report potential collision
+
+
+ Ascend or Descend to avoid thread
+
+
+ Ascend or Descend to avoid thread
+
+
+ Aircraft to move perpendicular to the collision's velocity vector
+
+
+ Aircraft to fly directly back to its launch point
+
+
+ Aircraft to stop in place
+
+
+
+ Aircraft-rated danger from this threat.
+
+ Not a threat
+
+
+ Craft is mildly concerned about this threat
+
+
+ Craft is panicing, and may take actions to avoid threat
+
+
+
+ Source of information about this collision.
+
+ ID field references ADSB_VEHICLE packets
+
+
+ ID field references MAVLink SRC ID
+
+
+
+ Type of GPS fix
+
+ No GPS connected
+
+
+ No position information, GPS is connected
+
+
+ 2D position
+
+
+ 3D position
+
+
+ DGPS/SBAS aided 3D position
+
+
+ RTK float, 3D position
+
+
+ RTK Fixed, 3D position
+
+
+ Static fixed, typically used for base stations
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAG ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version
+
+
+ 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 wether the system is currently active or not and if an emergency occured. During the CRITICAL and EMERGENCY states the MAV is still considered to be active, but should start emergency procedures autonomously. After a failure occured it should first move from active to critical to allow manual intervention and then move to emergency after a certain timeout.
+ Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices defined by ENUM MAV_SYS_STATUS_SENSOR
+ Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
+ Battery voltage, in millivolts (1 = 1 millivolt)
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery
+ Communication drops in percent, (0%: 0, 100%: 10'000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+ Autopilot-specific errors
+
+
+ The system time is the time of the master clock, typically the computer clock of the main onboard computer.
+ Timestamp of the master clock in microseconds since UNIX epoch.
+ Timestamp of the component clock since boot time in milliseconds.
+
+
+
+ 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.
+ Unix timestamp in microseconds or since system boot if smaller than MAVLink epoch (1.1.2009)
+ PING sequence
+ 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
+ 0: request ping from all receiving components, if greater than 0: message is a ping response and number is the system id of the requesting system
+
+
+ Request to control this MAV
+ System the GCS requests control for
+ 0: request control of this MAV, 1: Release control of this MAV
+ 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.
+ 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 "!?,.-"
+
+
+ Accept / deny control of this MAV
+ ID of the GCS this message
+ 0: request control of this MAV, 1: Release control of this MAV
+ 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control
+
+
+ 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.
+ key
+
+
+ THIS INTERFACE IS DEPRECATED. USE COMMAND_LONG with MAV_CMD_DO_SET_MODE INSTEAD. 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.
+ The system setting the mode
+ The new base mode
+ The new autopilot-specific mode. This field can be ignored by an autopilot.
+
+
+
+ Request to read the onboard parameter with the param_id string id. Onboard parameters are stored as key[const char*] -> 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 http://qgroundcontrol.org/parameter_interface for a full documentation of QGroundControl and IMU code.
+ System ID
+ Component 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
+ Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored)
+
+
+ Request all parameters of this component. After this request, all parameters are emitted.
+ System ID
+ Component ID
+
+
+ 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.
+ 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+ Total number of onboard parameters
+ Index of this onboard parameter
+
+
+ Set a parameter value TEMPORARILY to RAM. It will be reset to default on system reboot. Send the ACTION MAV_ACTION_STORAGE_WRITE to PERMANENTLY write the RAM contents to EEPROM. IMPORTANT: The receiving component should acknowledge the new parameter value by sending a param_value message to all communication partners. This will also ensure that multiple GCS all have an up-to-date list of all parameters. If the sending GCS did not receive a PARAM_VALUE message within its timeout time, it should re-send the PARAM_SET message.
+ System ID
+ Component 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
+ Onboard parameter value
+ Onboard parameter type: see the MAV_PARAM_TYPE enum for supported data types.
+
+
+ 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 for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, NOT WGS84), in meters * 1000 (positive for up). Note that virtually all GPS modules provide the AMSL altitude in addition to the WGS84 altitude.
+ GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+
+
+ 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 for the global position estimate. This message can contain information for up to 20 satellites.
+ Number of satellites visible
+ Global satellite ID
+ 0: Satellite not used, 1: used for localization
+ Elevation (0: right on top of receiver, 90: on the horizon) of satellite
+ Direction of satellite, 0: 0 deg, 255: 360 deg.
+ Signal to noise ratio of satellite
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ The RAW IMU readings for the usual 9DOF sensor setup. This message should always contain the true raw values without any scaling to allow data capture and system debugging.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ X acceleration (raw)
+ Y acceleration (raw)
+ Z acceleration (raw)
+ Angular speed around X axis (raw)
+ Angular speed around Y axis (raw)
+ Angular speed around Z axis (raw)
+ X Magnetic field (raw)
+ Y Magnetic field (raw)
+ Z Magnetic field (raw)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Absolute pressure (raw)
+ Differential pressure 1 (raw, 0 if nonexistant)
+ Differential pressure 2 (raw, 0 if nonexistant)
+ Raw Temperature measurement (raw)
+
+
+ The pressure readings for the typical setup of one absolute and differential pressure sensor. The units are as specified in each field.
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right).
+ Timestamp (milliseconds since system boot)
+ Roll angle (rad, -pi..+pi)
+ Pitch angle (rad, -pi..+pi)
+ Yaw angle (rad, -pi..+pi)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion component 1, w (1 in null-rotation)
+ Quaternion component 2, x (0 in null-rotation)
+ Quaternion component 3, y (0 in null-rotation)
+ Quaternion component 4, z (0 in null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ X Speed
+ Y Speed
+ Z Speed
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well)
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude, positive north), expressed as m/s * 100
+ Ground Y Speed (Longitude, positive east), expressed as m/s * 100
+ Ground Z Speed (Altitude, positive down), expressed as m/s * 100
+ Vehicle heading (yaw angle) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
+
+
+ The scaled values of the RC channels received. (-100%) -10000, (0%) 0, (100%) 10000. Channels that are inactive should be set to UINT16_MAX.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 2 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 3 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 4 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 5 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 6 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 7 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ RC channel 8 value scaled, (-100%) -10000, (0%) 0, (100%) 10000, (invalid) INT16_MAX.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows for more than 8 servos.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ 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%.
+ Timestamp (microseconds since system boot)
+ Servo output port (set of 8 outputs = 1 port). Most MAVs will just use one, but this allows to encode more than 8 servos.
+ Servo output 1 value, in microseconds
+ Servo output 2 value, in microseconds
+ Servo output 3 value, in microseconds
+ Servo output 4 value, in microseconds
+ Servo output 5 value, in microseconds
+ Servo output 6 value, in microseconds
+ Servo output 7 value, in microseconds
+ Servo output 8 value, in microseconds
+
+ Servo output 9 value, in microseconds
+ Servo output 10 value, in microseconds
+ Servo output 11 value, in microseconds
+ Servo output 12 value, in microseconds
+ Servo output 13 value, in microseconds
+ Servo output 14 value, in microseconds
+ Servo output 15 value, in microseconds
+ Servo output 16 value, in microseconds
+
+
+ Request a partial list of mission items from the system/component. http://qgroundcontrol.org/mavlink/waypoint_protocol. If start and end index are the same, just send one waypoint.
+ System ID
+ Component ID
+ Start index, 0 by default
+ End index, -1 by default (-1: send list to end). Else a valid index of the list
+
+
+ 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!
+ System ID
+ Component ID
+ Start index, 0 by default and smaller / equal to the largest index of the current onboard list.
+ End index, equal or greater than start index.
+
+
+ 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). See also http://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Sequence
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position, global: latitude
+ PARAM6 / y position: global: longitude
+ PARAM7 / z position: global: altitude (relative or absolute, depending on frame.
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ Set the mission item with sequence number seq as current item. This means that the MAV will continue to this mission item on the shortest path (not following the mission items in-between).
+ System ID
+ Component ID
+ Sequence
+
+
+ Message that announces the sequence number of the current active mission item. The MAV will fly towards this mission item.
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ 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 MISSIONs.
+ System ID
+ Component ID
+ Number of mission items in the sequence
+
+
+ Delete all mission items at once.
+ System ID
+ Component ID
+
+
+ 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 MISSION.
+ Sequence
+
+
+ Ack message during MISSION handling. The type field states if this message is a positive ack (type=0) or if an error happened (type=non-zero).
+ System ID
+ Component ID
+ See MAV_MISSION_RESULT enum
+
+
+ As local waypoints exist, the global MISSION reference allows to transform between the local coordinate frame and the global (GPS) coordinate frame. This can be necessary when e.g. in- and outdoor settings are connected and the MAV should move from in- to outdoor.
+ System ID
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Once the MAV sets a new GPS-Local correspondence, this message announces the origin (0,0,0) position
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+
+
+ Bind a RC channel to a parameter. The parameter should change accoding to the RC channel value.
+ System ID
+ Component 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
+ 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.
+ Index of parameter RC channel. Not equal to the RC channel id. Typically correpsonds to a potentiometer-knob on the RC.
+ Initial parameter value
+ Scale, maps the RC range [-1, 1] to a parameter value
+ Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation)
+ Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation)
+
+
+ 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. http://qgroundcontrol.org/mavlink/waypoint_protocol
+ System ID
+ Component ID
+ Sequence
+
+
+ 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/MISSIONs to accept and which to reject. Safety areas are often enforced by national or competition regulations.
+ System ID
+ Component ID
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ Read out the safety zone the MAV currently assumes.
+ Coordinate frame, as defined by MAV_FRAME enum in mavlink_types.h. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.
+ x position 1 / Latitude 1
+ y position 1 / Longitude 1
+ z position 1 / Altitude 1
+ x position 2 / Latitude 2
+ y position 2 / Longitude 2
+ z position 2 / Altitude 2
+
+
+ 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).
+ Timestamp (milliseconds since system boot)
+ Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)
+ Roll angular speed (rad/s)
+ Pitch angular speed (rad/s)
+ Yaw angular speed (rad/s)
+ Attitude covariance
+
+
+ The state of the fixed wing navigation and position controller.
+ Current desired roll in degrees
+ Current desired pitch in degrees
+ Current desired heading in degrees
+ Bearing to current MISSION/target in degrees
+ Distance to active MISSION in meters
+ Current altitude error in meters
+ Current airspeed error in meters/second
+ Current crosstrack error on x-y plane in meters
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters), above MSL
+ Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s
+ Ground Y Speed (Longitude), expressed as m/s
+ Ground Z Speed (Altitude), expressed as m/s
+ Covariance matrix (first six entries are the first ROW, next six entries are the second row, etc.)
+
+
+ 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)
+ Timestamp (milliseconds since system boot). 0 for system without monotonic timestamp
+ Timestamp (microseconds since UNIX epoch) in UTC. 0 for unknown. Commonly filled by the precision time source of a GPS receiver.
+ Class id of the estimator this estimate originated from.
+ X Position
+ Y Position
+ Z Position
+ X Speed (m/s)
+ Y Speed (m/s)
+ Z Speed (m/s)
+ X Acceleration (m/s^2)
+ Y Acceleration (m/s^2)
+ Z Acceleration (m/s^2)
+ Covariance matrix upper right triangular (first nine entries are the first ROW, next eight entries are the second row, etc.)
+
+
+ The PPM 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.
+ Timestamp (milliseconds since system boot)
+ 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.
+ RC channel 1 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 9 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 10 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 11 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 12 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 13 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 14 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 15 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 16 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 17 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ RC channel 18 value, in microseconds. A value of UINT16_MAX implies the channel is unused.
+ Receive signal strength indicator, 0: 0%, 100: 100%, 255: invalid/unknown.
+
+
+ THIS INTERFACE IS DEPRECATED. USE SET_MESSAGE_INTERVAL INSTEAD.
+ The target requested to send the message stream.
+ The target requested to send the message stream.
+ The ID of the requested data stream
+ The requested message rate
+ 1 to start sending, 0 to stop sending.
+
+
+ THIS INTERFACE IS DEPRECATED. USE MESSAGE_INTERVAL INSTEAD.
+ The ID of the requested data stream
+ The message rate
+ 1 stream is enabled, 0 stream is stopped.
+
+
+ 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 an buttons are also transmit as boolean values of their
+ The system to be controlled.
+ 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.
+ 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.
+ 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.
+ 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.
+ A bitfield corresponding to the joystick buttons' current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1.
+
+
+ The RAW values of the RC channels sent to the MAV to override info received from the RC radio. A value of UINT16_MAX means no change to that channel. A value of 0 means control of that channel should be released back to the RC radio. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.
+ System ID
+ Component ID
+ RC channel 1 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 2 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 3 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 4 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 5 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 6 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 7 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+ RC channel 8 value, in microseconds. A value of UINT16_MAX means to ignore this field.
+
+
+ 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). See alsohttp://qgroundcontrol.org/mavlink/waypoint_protocol.
+ System ID
+ Component ID
+ Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4).
+ The coordinate system of the MISSION. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the MISSION. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Metrics typically displayed on a HUD for fixed wing aircraft
+ Current airspeed in m/s
+ Current ground speed in m/s
+ Current heading in degrees, in compass units (0..360, 0=north)
+ Current throttle setting in integer percent, 0 to 100
+ Current altitude (MSL), in meters
+ Current climb rate in meters/second
+
+
+ Message encoding a command with parameters as scaled integers. Scaling depends on the actual command value.
+ System ID
+ Component ID
+ The coordinate system of the COMMAND. see MAV_FRAME in mavlink_types.h
+ The scheduled action for the mission item. see MAV_CMD in common.xml MAVLink specs
+ false:0, true:1
+ autocontinue to next wp
+ PARAM1, see MAV_CMD enum
+ PARAM2, see MAV_CMD enum
+ PARAM3, see MAV_CMD enum
+ PARAM4, see MAV_CMD enum
+ PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7
+ PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7
+ PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.
+
+
+ Send a command with up to seven parameters to the MAV
+ System which should execute the command
+ Component which should execute the command, 0 for all components
+ Command ID, as defined by MAV_CMD enum.
+ 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)
+ Parameter 1, as defined by MAV_CMD enum.
+ Parameter 2, as defined by MAV_CMD enum.
+ Parameter 3, as defined by MAV_CMD enum.
+ Parameter 4, as defined by MAV_CMD enum.
+ Parameter 5, as defined by MAV_CMD enum.
+ Parameter 6, as defined by MAV_CMD enum.
+ Parameter 7, as defined by MAV_CMD enum.
+
+
+ Report status of a command. Includes feedback wether the command was executed.
+ Command ID, as defined by MAV_CMD enum.
+ See MAV_RESULT enum
+
+
+ Setpoint in roll, pitch, yaw and thrust from the operator
+ Timestamp in milliseconds since system boot
+ Desired roll rate in radians per second
+ Desired pitch rate in radians per second
+ Desired yaw rate in radians per second
+ Collective thrust, normalized to 0 .. 1
+ Flight mode switch position, 0.. 255
+ Override mode switch position, 0.. 255
+
+
+ Sets a desired vehicle attitude. Used by an external controller to command the vehicle (manual controller or other system).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 6: reserved, bit 7: throttle, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ Mappings: If any of these bits are set, the corresponding input should be ignored: bit 1: body roll rate, bit 2: body pitch rate, bit 3: body yaw rate. bit 4-bit 7: reserved, bit 8: attitude
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Body roll rate in radians per second
+ Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
+
+
+ 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).
+ Timestamp in milliseconds since system boot
+ System ID
+ Component ID
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds since system boot
+ 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
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in NED frame in meters
+ Y Position in NED frame in meters
+ Z Position in NED frame in meters (note, altitude is negative in NED)
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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).
+ Timestamp in milliseconds 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.
+ System ID
+ Component ID
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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.
+ Timestamp in milliseconds 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.
+ Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11
+ Bitmask 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 10 is set the floats afx afy afz should be interpreted as force instead of acceleration. Mapping: bit 1: x, bit 2: y, bit 3: z, bit 4: vx, bit 5: vy, bit 6: vz, bit 7: ax, bit 8: ay, bit 9: az, bit 10: is force setpoint, bit 11: yaw, bit 12: yaw rate
+ X Position in WGS84 frame in 1e7 * meters
+ Y Position in WGS84 frame in 1e7 * meters
+ Altitude in meters in AMSL altitude, not WGS84 if absolute or relative, above terrain if GLOBAL_TERRAIN_ALT_INT
+ X velocity in NED frame in meter / s
+ Y velocity in NED frame in meter / s
+ Z velocity in NED frame in meter / s
+ X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
+ yaw setpoint in rad
+ yaw rate setpoint in rad/s
+
+
+ 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)
+ Timestamp (milliseconds since system boot)
+ X Position
+ Y Position
+ Z Position
+ Roll
+ Pitch
+ Yaw
+
+
+ DEPRECATED PACKET! Suffers from missing airspeed fields and singularities due to Euler angles. Please use HIL_STATE_QUATERNION instead. Sent from simulation to autopilot. This packet is useful for high throughput applications such as hardware in the loop simulations.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Roll angle (rad)
+ Pitch angle (rad)
+ Yaw angle (rad)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Control output -1 .. 1
+ Throttle 0 .. 1
+ Aux 1, -1 .. 1
+ Aux 2, -1 .. 1
+ Aux 3, -1 .. 1
+ Aux 4, -1 .. 1
+ System mode (MAV_MODE)
+ Navigation mode (MAV_NAV_MODE)
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ RC channel 1 value, in microseconds
+ RC channel 2 value, in microseconds
+ RC channel 3 value, in microseconds
+ RC channel 4 value, in microseconds
+ RC channel 5 value, in microseconds
+ RC channel 6 value, in microseconds
+ RC channel 7 value, in microseconds
+ RC channel 8 value, in microseconds
+ RC channel 9 value, in microseconds
+ RC channel 10 value, in microseconds
+ RC channel 11 value, in microseconds
+ RC channel 12 value, in microseconds
+ Receive signal strength indicator, 0: 0%, 255: 100%
+
+
+ Sent from autopilot to simulation. Hardware in the loop control outputs (replacement for HIL_CONTROLS)
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.
+ System mode (MAV_MODE), includes arming state.
+ Flags as bitfield, reserved for future use.
+
+
+ Optical flow from a flow sensor (e.g. optical mouse sensor)
+ Timestamp (UNIX)
+ Sensor ID
+ Flow in pixels * 10 in x-sensor direction (dezi-pixels)
+ Flow in pixels * 10 in y-sensor direction (dezi-pixels)
+ Flow in meters in x-sensor direction, angular-speed compensated
+ Flow in meters in y-sensor direction, angular-speed compensated
+ Optical flow quality / confidence. 0: bad, 255: maximum quality
+ Ground distance in meters. Positive value: distance known. Negative value: Unknown distance
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X speed
+ Global Y speed
+ Global Z speed
+
+
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Global X position
+ Global Y position
+ Global Z position
+ Roll angle in rad
+ Pitch angle in rad
+ Yaw angle in rad
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis (rad / sec)
+ Angular speed around Y axis (rad / sec)
+ Angular speed around Z axis (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature
+
+
+ Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ The IMU readings in SI units in NED body frame
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ X acceleration (m/s^2)
+ Y acceleration (m/s^2)
+ Z acceleration (m/s^2)
+ Angular speed around X axis in body frame (rad / sec)
+ Angular speed around Y axis in body frame (rad / sec)
+ Angular speed around Z axis in body frame (rad / sec)
+ X Magnetic field (Gauss)
+ Y Magnetic field (Gauss)
+ Z Magnetic field (Gauss)
+ Absolute pressure in millibar
+ Differential pressure (airspeed) in millibar
+ Altitude calculated from pressure
+ Temperature in degrees celsius
+ Bitmask for fields that have updated since last message, bit 0 = xacc, bit 12: temperature, bit 31: full reset of attitude/position/velocities/etc was performed in sim.
+
+
+
+ Status of simulation environment, if used
+ True attitude quaternion component 1, w (1 in null-rotation)
+ True attitude quaternion component 2, x (0 in null-rotation)
+ True attitude quaternion component 3, y (0 in null-rotation)
+ True attitude quaternion component 4, z (0 in null-rotation)
+ Attitude roll expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs
+ Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs
+ X acceleration m/s/s
+ Y acceleration m/s/s
+ Z acceleration m/s/s
+ Angular speed around X axis rad/s
+ Angular speed around Y axis rad/s
+ Angular speed around Z axis rad/s
+ Latitude in degrees
+ Longitude in degrees
+ Altitude in meters
+ Horizontal position standard deviation
+ Vertical position standard deviation
+ True velocity in m/s in NORTH direction in earth-fixed NED frame
+ True velocity in m/s in EAST direction in earth-fixed NED frame
+ True velocity in m/s in DOWN direction in earth-fixed NED frame
+
+
+
+ Status generated by radio and injected into MAVLink stream.
+ Local signal strength
+ Remote signal strength
+ Remaining free buffer space in percent.
+ Background noise level
+ Remote background noise level
+ Receive errors
+ Count of error corrected packets
+
+
+ File transfer message
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ Time synchronization message.
+ Time sync timestamp 1
+ Time sync timestamp 2
+
+
+ Camera-IMU triggering and synchronisation message.
+ Timestamp for the image frame in microseconds
+ Image frame sequence
+
+
+ The global position, as returned by the Global Positioning System (GPS). This is
+ NOT the global position estimate of the sytem, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: 65535
+ GPS ground speed (m/s * 100). If unknown, set to: 65535
+ GPS velocity in cm/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in cm/s in EAST direction in earth-fixed NED frame
+ GPS velocity in cm/s in DOWN direction in earth-fixed NED frame
+ Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: 65535
+ Number of satellites visible. If unknown, set to 255
+
+
+ Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical mouse sensor)
+ Timestamp (microseconds, synced to UNIX time or since system boot)
+ Sensor ID
+ Integration time in microseconds. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.
+ 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.)
+ 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.)
+ RH rotation around X axis (rad)
+ RH rotation around Y axis (rad)
+ RH rotation around Z axis (rad)
+ Temperature * 100 in centi-degrees Celsius
+ Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
+ Time in microseconds since the distance was sampled.
+ Distance to the center of the flow field in meters. Positive value (including zero): distance known. Negative value: Unknown distance.
+
+
+ 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.
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
+ Body frame roll / phi angular speed (rad/s)
+ Body frame pitch / theta angular speed (rad/s)
+ Body frame yaw / psi angular speed (rad/s)
+ Latitude, expressed as * 1E7
+ Longitude, expressed as * 1E7
+ Altitude in meters, expressed as * 1000 (millimeters)
+ Ground X Speed (Latitude), expressed as m/s * 100
+ Ground Y Speed (Longitude), expressed as m/s * 100
+ Ground Z Speed (Altitude), expressed as m/s * 100
+ Indicated airspeed, expressed as m/s * 100
+ True airspeed, expressed as m/s * 100
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+
+
+ The RAW IMU readings for secondary 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ Request a list of available logs. On some systems calling this may stop on-board logging until LOG_REQUEST_END is called.
+ System ID
+ Component ID
+ First log id (0 for first available)
+ Last log id (0xffff for last available)
+
+
+ Reply to LOG_REQUEST_LIST
+ Log id
+ Total number of logs
+ High log number
+ UTC timestamp of log in seconds since 1970, or 0 if not available
+ Size of the log (may be approximate) in bytes
+
+
+ Request a chunk of a log
+ System ID
+ Component ID
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes
+
+
+ Reply to LOG_REQUEST_DATA
+ Log id (from LOG_ENTRY reply)
+ Offset into the log
+ Number of bytes (zero for end of log)
+ log data
+
+
+ Erase all logs
+ System ID
+ Component ID
+
+
+ Stop log transfer and resume normal logging
+ System ID
+ Component ID
+
+
+ data for injecting into the onboard GPS (used for DGPS)
+ System ID
+ Component ID
+ data length
+ raw data (110 is enough for 12 satellites of RTCMv2)
+
+
+ Second GPS data. Coordinate frame is right-handed, Z-axis up (GPS frame).
+ Timestamp (microseconds since UNIX epoch or microseconds since system boot)
+ See the GPS_FIX_TYPE enum.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in meters * 1000 (positive for up)
+ GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX
+ GPS ground speed (m/s * 100). If unknown, set to: 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
+ Number of satellites visible. If unknown, set to 255
+ Number of DGPS satellites
+ Age of DGPS info
+
+
+ Power supply status
+ 5V rail voltage in millivolts
+ servo rail voltage in millivolts
+ power supply status flags (see MAV_POWER_STATUS enum)
+
+
+ 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.
+ See SERIAL_CONTROL_DEV enum
+ See SERIAL_CONTROL_FLAG enum
+ Timeout for reply data in milliseconds
+ Baudrate of transfer. Zero means no change.
+ how many bytes in this transfer
+ serial data
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting
+ Time since boot of last baseline message received in ms.
+ Identification of connected RTK receiver.
+ GPS Week Number of last baseline
+ GPS Time of Week of last baseline
+ GPS-specific health report for RTK data.
+ Rate of baseline messages being received by GPS, in HZ
+ Current number of sats used for RTK calculation.
+ Coordinate system of baseline. 0 == ECEF, 1 == NED
+ Current baseline in ECEF x or NED north component in mm.
+ Current baseline in ECEF y or NED east component in mm.
+ Current baseline in ECEF z or NED down component in mm.
+ Current estimate of baseline accuracy.
+ Current number of integer ambiguity hypotheses.
+
+
+ The RAW IMU readings for 3rd 9DOF sensor setup. This message should contain the scaled values to the described units
+ Timestamp (milliseconds since system boot)
+ X acceleration (mg)
+ Y acceleration (mg)
+ Z acceleration (mg)
+ Angular speed around X axis (millirad /sec)
+ Angular speed around Y axis (millirad /sec)
+ Angular speed around Z axis (millirad /sec)
+ X Magnetic field (milli tesla)
+ Y Magnetic field (milli tesla)
+ Z Magnetic field (milli tesla)
+
+
+ type of requested/acknowledged data (as defined in ENUM DATA_TYPES in mavlink/include/mavlink_types.h)
+ total data size in bytes (set on ACK only)
+ Width of a matrix or image
+ Height of a matrix or image
+ number of packets beeing sent (set on ACK only)
+ payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only)
+ JPEG quality out of [1,100]
+
+
+ sequence number (starting with 0 on every transmission)
+ image data bytes
+
+
+ Time since system boot
+ Minimum distance the sensor can measure in centimeters
+ Maximum distance the sensor can measure in centimeters
+ Current distance reading
+ Type from MAV_DISTANCE_SENSOR enum.
+ Onboard ID of the sensor
+ Direction the sensor faces from MAV_SENSOR_ORIENTATION enum.
+ Measurement covariance in centimeters, 0 for unknown / invalid readings
+
+
+ Request for terrain data and terrain status
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
+
+
+ Terrain data sent from GCS. The lat/lon and grid_spacing must be the same as a lat/lon from a TERRAIN_REQUEST
+ Latitude of SW corner of first grid (degrees *10^7)
+ Longitude of SW corner of first grid (in degrees *10^7)
+ Grid spacing in meters
+ bit within the terrain request mask
+ Terrain data in meters AMSL
+
+
+ Request that the vehicle report terrain height at the given location. Used by GCS to check if vehicle has all terrain data needed for a mission.
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+
+
+ Response from a TERRAIN_CHECK request
+ Latitude (degrees *10^7)
+ Longitude (degrees *10^7)
+ grid spacing (zero if terrain at this location unavailable)
+ Terrain height in meters AMSL
+ Current vehicle height above lat/lon terrain height (meters)
+ Number of 4x4 terrain blocks waiting to be received or read from disk
+ Number of 4x4 terrain blocks in memory
+
+
+ Barometer readings for 2nd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ Motion capture attitude and position
+ Timestamp (micros since boot or Unix epoch)
+ Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
+ X position in meters (NED)
+ Y position in meters (NED)
+ Z position in meters (NED)
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ System ID
+ Component ID
+ 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.
+
+
+ Set the vehicle attitude and body angular rates.
+ Timestamp (micros since boot or Unix epoch)
+ Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.
+ 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.
+
+
+ The current system altitude.
+ Timestamp (micros since boot or Unix epoch)
+ 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.
+ 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 AMSL by default and not the WGS84 altitude.
+ 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.
+ This is the altitude above the home position. It resets on each change of the current home position.
+ 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.
+ 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.
+
+
+ The autopilot is requesting a resource (file, binary, other type of data)
+ Request ID. This ID should be re-used when sending back URI contents
+ The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary
+ The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum)
+ The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream.
+ 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).
+
+
+ Barometer readings for 3rd barometer
+ Timestamp (milliseconds since system boot)
+ Absolute pressure (hectopascal)
+ Differential pressure 1 (hectopascal)
+ Temperature measurement (0.01 degrees celsius)
+
+
+ current motion information from a designated system
+ Timestamp in milliseconds since system boot
+ bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3)
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ AMSL, in meters
+ target velocity (0,0,0) for unknown
+ linear target acceleration (0,0,0) for unknown
+ (1 0 0 0 for unknown)
+ (0 0 0 for unknown)
+ eph epv
+ button states or switches of a tracker device
+
+
+ The smoothed, monotonic system state used to feed the control loops of the system.
+ Timestamp (micros since boot or Unix epoch)
+ X acceleration in body frame
+ Y acceleration in body frame
+ Z acceleration in body frame
+ X velocity in body frame
+ Y velocity in body frame
+ Z velocity in body frame
+ X position in local frame
+ Y position in local frame
+ Z position in local frame
+ Airspeed, set to -1 if unknown
+ Variance of body velocity estimate
+ Variance in local position
+ The attitude, represented as Quaternion
+ Angular rate in roll axis
+ Angular rate in pitch axis
+ Angular rate in yaw axis
+
+
+ Battery information
+ Battery ID
+ Function of the battery
+ Type (chemistry) of the battery
+ Temperature of the battery in centi-degrees celsius. INT16_MAX for unknown temperature.
+ Battery voltage of cells, in millivolts (1 = 1 millivolt). Cells above the valid cell count for this battery should have the UINT16_MAX value.
+ Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
+ Consumed charge, in milliampere hours (1 = 1 mAh), -1: autopilot does not provide mAh consumption estimate
+ Consumed energy, in 100*Joules (intergrated U*I*dt) (1 = 100 Joule), -1: autopilot does not provide energy consumption estimate
+ Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot does not estimate the remaining battery
+
+
+ Version and capability of autopilot software
+ bitmask of capabilities (see MAV_PROTOCOL_CAPABILITY enum)
+ Firmware version number
+ Middleware version number
+ Operating system version number
+ HW / board version (last 8 bytes should be silicon ID, if any)
+ 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.
+ 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.
+ 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.
+ ID of the board vendor
+ ID of the product
+ UID if provided by hardware
+
+
+ The location of a landing area captured from a downward facing camera
+ Timestamp (micros since boot or Unix epoch)
+ The ID of the target if multiple targets are present
+ MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc.
+ X-axis angular offset (in radians) of the target from the center of the image
+ Y-axis angular offset (in radians) of the target from the center of the image
+ Distance to the target from the vehicle in meters
+ Size in radians of target along x-axis
+ Size in radians of target along y-axis
+
+
+
+ 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 innovaton test ratios show the magnitude of the sensor innovation divided by the innovation check threshold. Under normal operation the innovaton 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.
+ Timestamp (micros since boot or Unix epoch)
+ Integer bitmask indicating which EKF outputs are valid. See definition for ESTIMATOR_STATUS_FLAGS.
+ Velocity innovation test ratio
+ Horizontal position innovation test ratio
+ Vertical position innovation test ratio
+ Magnetometer innovation test ratio
+ Height above terrain innovation test ratio
+ True airspeed innovation test ratio
+ Horizontal position 1-STD accuracy relative to the EKF local origin (m)
+ Vertical position 1-STD accuracy relative to the EKF local origin (m)
+
+
+ Timestamp (micros since boot or Unix epoch)
+ Wind in X (NED) direction in m/s
+ Wind in Y (NED) direction in m/s
+ Wind in Z (NED) direction in m/s
+ Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate.
+ Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate.
+ AMSL altitude (m) this measurement was taken at
+ Horizontal speed 1-STD accuracy
+ Vertical speed 1-STD accuracy
+
+
+ GPS sensor input message. This is a raw sensor value sent by the GPS. This is NOT the global position estimate of the sytem.
+ Timestamp (micros since boot or Unix epoch)
+ ID of the GPS for multiple GPS inputs
+ Flags indicating which fields to ignore (see GPS_INPUT_IGNORE_FLAGS enum). All other fields must be provided.
+ GPS time (milliseconds from start of GPS week)
+ GPS week number
+ 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84), in degrees * 1E7
+ Altitude (AMSL, not WGS84), in m (positive for up)
+ GPS HDOP horizontal dilution of position in m
+ GPS VDOP vertical dilution of position in m
+ GPS velocity in m/s in NORTH direction in earth-fixed NED frame
+ GPS velocity in m/s in EAST direction in earth-fixed NED frame
+ GPS velocity in m/s in DOWN direction in earth-fixed NED frame
+ GPS speed accuracy in m/s
+ GPS horizontal accuracy in m
+ GPS vertical accuracy in m
+ Number of satellites visible.
+
+
+ WORK IN PROGRESS! RTCM message for injecting into the onboard GPS (used for DGPS)
+ LSB: 1 means message is fragmented
+ data length
+ RTCM message (may be fragmented)
+
+
+ Vibration levels and accelerometer clipping
+ Timestamp (micros since boot or Unix epoch)
+ Vibration levels on X-axis
+ Vibration levels on Y-axis
+ Vibration levels on Z-axis
+ first accelerometer clipping count
+ second accelerometer clipping count
+ third accelerometer clipping count
+
+
+ This message can be requested by sending the MAV_CMD_GET_HOME_POSITION command. The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. The position the system will return to and land on. 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.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ The position the system will return to and land on. The position is set automatically by the system during the takeoff in case it was not explicitely set by the operator before or after. 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.
+ System ID.
+ Latitude (WGS84), in degrees * 1E7
+ Longitude (WGS84, in degrees * 1E7
+ Altitude (AMSL), in meters * 1000 (positive for up)
+ Local X position of this position in the local coordinate frame
+ Local Y position of this position in the local coordinate frame
+ Local Z position of this position in the local coordinate frame
+ World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground
+ 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.
+ 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.
+ 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.
+
+
+ This interface replaces DATA_STREAM
+ The ID of the requested MAVLink message. v1.0 is limited to 254 messages.
+ The interval between two messages, in microseconds. A value of -1 indicates this stream is disabled, 0 indicates it is not available, > 0 indicates the interval at which it is sent.
+
+
+ Provides state for additional features
+ The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration.
+ The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.
+
+
+ The location and information of an ADSB vehicle
+ ICAO address
+ Latitude, expressed as degrees * 1E7
+ Longitude, expressed as degrees * 1E7
+ Type from ADSB_ALTITUDE_TYPE enum
+ Altitude(ASL) in millimeters
+ Course over ground in centidegrees
+ The horizontal velocity in centimeters/second
+ The vertical velocity in centimeters/second, positive is up
+ The callsign, 8+null
+ Type from ADSB_EMITTER_TYPE enum
+ Time since last communication in seconds
+ Flags to indicate various statuses including valid data fields
+ Squawk code
+
+
+ Information about a potential collision
+ Collision data source
+ Unique identifier, domain based on src field
+ Action that is being taken to avoid this collision
+ How concerned the aircraft is about this collision
+ Estimated time until collision occurs (seconds)
+ Closest vertical distance in meters between vehicle and object
+ Closest horizontal distance in meteres between vehicle and object
+
+
+ Message implementing parts of the V2 payload specs in V1 frames for transitional support.
+ Network ID (0 for broadcast)
+ System ID (0 for broadcast)
+ Component ID (0 for broadcast)
+ 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/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.
+ Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The entire content of this block is opaque unless you understand any the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the mavlink specification.
+
+
+ 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.
+ Starting address of the debug variables
+ Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below
+ 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
+ Memory contents at specified address
+
+
+ Name
+ Timestamp
+ x
+ y
+ z
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Floating point value
+
+
+ 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.
+ Timestamp (milliseconds since system boot)
+ Name of the debug variable
+ Signed integer value
+
+
+ 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).
+ Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY.
+ Status text message, without null termination character
+
+
+ Send a debug value. The index is used to discriminate between values. These values show up in the plot of QGroundControl as DEBUG N.
+ Timestamp (milliseconds since system boot)
+ index of debug variable
+ DEBUG value
+
+
+
+
+ Setup a MAVLink2 signing key. If called with secret_key of all zero and zero initial_timestamp will disable signing
+ system id of the target
+ component ID of the target
+ signing key
+ initial timestamp
+
+
+
+ Report button state change
+ Timestamp (milliseconds since system boot)
+ Time of last change of button state
+ Bitmap state of buttons
+
+
+
+ Control vehicle tone generation (buzzer)
+ System ID
+ Component ID
+ tune in board specific format
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/matrixpilot.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/matrixpilot.xml
new file mode 100644
index 000000000..29d368d2a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/matrixpilot.xml
@@ -0,0 +1,284 @@
+
+
+ common.xml
+
+
+
+
+
+
+
+ Action required when performing CMD_PREFLIGHT_STORAGE
+
+ Read all parameters from storage
+
+
+ Write all parameters to storage
+
+
+ Clear all parameters in storage
+
+
+ Read specific parameters from storage
+
+
+ Write specific parameters to storage
+
+
+ Clear specific parameters in storage
+
+
+ do nothing
+
+
+
+
+
+ Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.
+ Storage action: Action defined by MAV_PREFLIGHT_STORAGE_ACTION_ADVANCED
+ Storage area as defined by parameter database
+ Storage flags as defined by parameter database
+ Empty
+ Empty
+ Empty
+ Empty
+
+
+
+
+
+
+
+
+ Depreciated but used as a compiler flag. Do not remove
+ System ID
+ Component ID
+
+
+ Reqest reading of flexifunction data
+ System ID
+ Component ID
+ Type of flexifunction data requested
+ index into data where needed
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ Total count of functions
+ Address in the flexifunction data, Set to 0xFFFF to use address in target memory
+ Size of the
+ Settings data
+
+
+ Flexifunction type and parameters for component at function index from buffer
+ System ID
+ Component ID
+ Function index
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ Settings data
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ 0=inputs, 1=outputs
+ index of first directory entry to write
+ count of directory entries to write
+ result of acknowledge, 0=fail, 1=good
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ System ID
+ Component ID
+ Flexifunction command type
+
+
+ Acknowldge sucess or failure of a flexifunction command
+ Command acknowledged
+ result of acknowledge
+
+
+ Backwards compatible MAVLink version of SERIAL_UDB_EXTRA - F2: Format Part A
+ Serial UDB Extra Time
+ Serial UDB Extra Status
+ Serial UDB Extra Latitude
+ Serial UDB Extra Longitude
+ Serial UDB Extra Altitude
+ Serial UDB Extra Waypoint Index
+ Serial UDB Extra Rmat 0
+ Serial UDB Extra Rmat 1
+ Serial UDB Extra Rmat 2
+ Serial UDB Extra Rmat 3
+ Serial UDB Extra Rmat 4
+ Serial UDB Extra Rmat 5
+ Serial UDB Extra Rmat 6
+ Serial UDB Extra Rmat 7
+ Serial UDB Extra Rmat 8
+ Serial UDB Extra GPS Course Over Ground
+ Serial UDB Extra Speed Over Ground
+ Serial UDB Extra CPU Load
+ Serial UDB Extra Voltage in MilliVolts
+ Serial UDB Extra 3D IMU Air Speed
+ Serial UDB Extra Estimated Wind 0
+ Serial UDB Extra Estimated Wind 1
+ Serial UDB Extra Estimated Wind 2
+ Serial UDB Extra Magnetic Field Earth 0
+ Serial UDB Extra Magnetic Field Earth 1
+ Serial UDB Extra Magnetic Field Earth 2
+ Serial UDB Extra Number of Sattelites in View
+ Serial UDB Extra GPS Horizontal Dilution of Precision
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA - F2: Part B
+ Serial UDB Extra Time
+ Serial UDB Extra PWM Input Channel 1
+ Serial UDB Extra PWM Input Channel 2
+ Serial UDB Extra PWM Input Channel 3
+ Serial UDB Extra PWM Input Channel 4
+ Serial UDB Extra PWM Input Channel 5
+ Serial UDB Extra PWM Input Channel 6
+ Serial UDB Extra PWM Input Channel 7
+ Serial UDB Extra PWM Input Channel 8
+ Serial UDB Extra PWM Input Channel 9
+ Serial UDB Extra PWM Input Channel 10
+ Serial UDB Extra PWM Output Channel 1
+ Serial UDB Extra PWM Output Channel 2
+ Serial UDB Extra PWM Output Channel 3
+ Serial UDB Extra PWM Output Channel 4
+ Serial UDB Extra PWM Output Channel 5
+ Serial UDB Extra PWM Output Channel 6
+ Serial UDB Extra PWM Output Channel 7
+ Serial UDB Extra PWM Output Channel 8
+ Serial UDB Extra PWM Output Channel 9
+ Serial UDB Extra PWM Output Channel 10
+ Serial UDB Extra IMU Location X
+ Serial UDB Extra IMU Location Y
+ Serial UDB Extra IMU Location Z
+ Serial UDB Extra Status Flags
+ Serial UDB Extra Oscillator Failure Count
+ Serial UDB Extra IMU Velocity X
+ Serial UDB Extra IMU Velocity Y
+ Serial UDB Extra IMU Velocity Z
+ Serial UDB Extra Current Waypoint Goal X
+ Serial UDB Extra Current Waypoint Goal Y
+ Serial UDB Extra Current Waypoint Goal Z
+ Serial UDB Extra Stack Memory Free
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F4: format
+ Serial UDB Extra Roll Stabilization with Ailerons Enabled
+ Serial UDB Extra Roll Stabilization with Rudder Enabled
+ Serial UDB Extra Pitch Stabilization Enabled
+ Serial UDB Extra Yaw Stabilization using Rudder Enabled
+ Serial UDB Extra Yaw Stabilization using Ailerons Enabled
+ Serial UDB Extra Navigation with Ailerons Enabled
+ Serial UDB Extra Navigation with Rudder Enabled
+ Serial UDB Extra Type of Alitude Hold when in Stabilized Mode
+ Serial UDB Extra Type of Alitude Hold when in Waypoint Mode
+ Serial UDB Extra Firmware racing mode enabled
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F5: format
+ Serial UDB YAWKP_AILERON Gain for Proporional control of navigation
+ Serial UDB YAWKD_AILERON Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD Gain for Rate control of roll stabilization
+ YAW_STABILIZATION_AILERON Proportional control
+ Gain For Boosting Manual Aileron control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F6: format
+ Serial UDB Extra PITCHGAIN Proportional Control
+ Serial UDB Extra Pitch Rate Control
+ Serial UDB Extra Rudder to Elevator Mix
+ Serial UDB Extra Roll to Elevator Mix
+ Gain For Boosting Manual Elevator control When Plane Stabilized
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F7: format
+ Serial UDB YAWKP_RUDDER Gain for Proporional control of navigation
+ Serial UDB YAWKD_RUDDER Gain for Rate control of navigation
+ Serial UDB Extra ROLLKP_RUDDER Gain for Proportional control of roll stabilization
+ Serial UDB Extra ROLLKD_RUDDER Gain for Rate control of roll stabilization
+ SERIAL UDB EXTRA Rudder Boost Gain to Manual Control when stabilized
+ Serial UDB Extra Return To Landing - Angle to Pitch Plane Down
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F8: format
+ Serial UDB Extra HEIGHT_TARGET_MAX
+ Serial UDB Extra HEIGHT_TARGET_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MIN
+ Serial UDB Extra ALT_HOLD_THROTTLE_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_MIN
+ Serial UDB Extra ALT_HOLD_PITCH_MAX
+ Serial UDB Extra ALT_HOLD_PITCH_HIGH
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F13: format
+ Serial UDB Extra GPS Week Number
+ Serial UDB Extra MP Origin Latitude
+ Serial UDB Extra MP Origin Longitude
+ Serial UDB Extra MP Origin Altitude Above Sea Level
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F14: format
+ Serial UDB Extra Wind Estimation Enabled
+ Serial UDB Extra Type of GPS Unit
+ Serial UDB Extra Dead Reckoning Enabled
+ Serial UDB Extra Type of UDB Hardware
+ Serial UDB Extra Type of Airframe
+ Serial UDB Extra Reboot Regitster of DSPIC
+ Serial UDB Extra Last dspic Trap Flags
+ Serial UDB Extra Type Program Address of Last Trap
+ Serial UDB Extra Number of Ocillator Failures
+ Serial UDB Extra UDB Internal Clock Configuration
+ Serial UDB Extra Type of Flight Plan
+
+
+ Backwards compatible version of SERIAL_UDB_EXTRA F15 and F16: format
+ Serial UDB Extra Model Name Of Vehicle
+ Serial UDB Extra Registraton Number of Vehicle
+
+
+ Serial UDB Extra Name of Expected Lead Pilot
+ Serial UDB Extra URL of Lead Pilot or Team
+
+
+ The altitude measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ GPS altitude in meters, expressed as * 1000 (millimeters), above MSL
+ IMU altitude above ground in meters, expressed as * 1000 (millimeters)
+ barometeric altitude above ground in meters, expressed as * 1000 (millimeters)
+ Optical flow altitude above ground in meters, expressed as * 1000 (millimeters)
+ Rangefinder Altitude above ground in meters, expressed as * 1000 (millimeters)
+ Extra altitude above ground in meters, expressed as * 1000 (millimeters)
+
+
+ The airspeed measured by sensors and IMU
+ Timestamp (milliseconds since system boot)
+ Airspeed estimate from IMU, cm/s
+ Pitot measured forward airpseed, cm/s
+ Hot wire anenometer measured airspeed, cm/s
+ Ultrasonic measured airspeed, cm/s
+ Angle of attack sensor, degrees * 10
+ Yaw angle sensor, degrees * 10
+
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/minimal.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/minimal.xml
new file mode 100644
index 000000000..88985a5c9
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/minimal.xml
@@ -0,0 +1,189 @@
+
+
+ 2
+
+
+ Micro air vehicle / autopilot classes. This identifies the individual model.
+
+ Generic autopilot, full support for everything
+
+
+ PIXHAWK autopilot, http://pixhawk.ethz.ch
+
+
+ SLUGS autopilot, http://slugsuav.soe.ucsc.edu
+
+
+ ArduPilotMega / ArduCopter, http://diydrones.com
+
+
+ OpenPilot, http://openpilot.org
+
+
+ Generic autopilot only supporting simple waypoints
+
+
+ Generic autopilot supporting waypoints and other simple navigation commands
+
+
+ Generic autopilot supporting the full mission command set
+
+
+ No valid autopilot, e.g. a GCS or other MAVLink component
+
+
+ PPZ UAV - http://nongnu.org/paparazzi
+
+
+ UAV Dev Board
+
+
+ FlexiPilot
+
+
+
+
+ Generic micro air vehicle.
+
+
+ Fixed wing aircraft.
+
+
+ Quadrotor
+
+
+ Coaxial helicopter
+
+
+ Normal helicopter with tail rotor.
+
+
+ Ground installation
+
+
+ Operator control unit / ground control station
+
+
+ Airship, controlled
+
+
+ Free balloon, uncontrolled
+
+
+ Rocket
+
+
+ Ground rover
+
+
+ Surface vessel, boat, ship
+
+
+ Submarine
+
+
+ Hexarotor
+
+
+ Octorotor
+
+
+ Octorotor
+
+
+ Flapping wing
+
+
+
+ These flags encode the MAV mode.
+
+ 0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.
+
+
+ 0b01000000 remote control input is enabled.
+
+
+ 0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.
+
+
+ 0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.
+
+
+ 0b00001000 guided mode enabled, system flies MISSIONs / mission items.
+
+
+ 0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.
+
+
+ 0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.
+
+
+ 0b00000001 Reserved for future use.
+
+
+
+ These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
+
+ First bit: 10000000
+
+
+ Second bit: 01000000
+
+
+ Third bit: 00100000
+
+
+ Fourth bit: 00010000
+
+
+ Fifth bit: 00001000
+
+
+ Sixt bit: 00000100
+
+
+ Seventh bit: 00000010
+
+
+ Eighth bit: 00000001
+
+
+
+
+ Uninitialized system, state is unknown.
+
+
+ System is booting up.
+
+
+ System is calibrating and not flight-ready.
+
+
+ System is grounded and on standby. It can be launched any time.
+
+
+ System is active and might be already airborne. Motors are engaged.
+
+
+ System is in a non-normal flight mode. It can however still navigate.
+
+
+ System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.
+
+
+ System just initialized its power-down sequence, will shut down now.
+
+
+
+
+
+ The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot).
+ Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM)
+ Autopilot type / class. defined in MAV_AUTOPILOT ENUM
+ System mode bitfield, see MAV_MODE_FLAGS ENUM in mavlink/include/mavlink_types.h
+ A bitfield for use for autopilot-specific flags.
+ System status flag, see MAV_STATE ENUM
+ MAVLink version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/paparazzi.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/paparazzi.xml
new file mode 100755
index 000000000..220007558
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/paparazzi.xml
@@ -0,0 +1,38 @@
+
+
+ common.xml
+ 3
+
+
+
+
+
+ Message encoding a mission script item. This message is emitted upon a request for the next script item.
+ System ID
+ Component ID
+ Sequence
+ The name of the mission script, NULL terminated.
+
+
+ Request script item with the sequence number seq. The response of the system to this message should be a SCRIPT_ITEM message.
+ System ID
+ Component ID
+ Sequence
+
+
+ Request the overall list of mission items from the system/component.
+ System ID
+ Component ID
+
+
+ This message is emitted as response to SCRIPT_REQUEST_LIST by the MAV to get the number of mission scripts.
+ System ID
+ Component ID
+ Number of script items in the sequence
+
+
+ This message informs about the currently active SCRIPT.
+ Active Sequence
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/python_array_test.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/python_array_test.xml
new file mode 100644
index 000000000..f230d0126
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/python_array_test.xml
@@ -0,0 +1,67 @@
+
+
+
+common.xml
+
+
+ Array test #0.
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #1.
+ Value array
+
+
+ Array test #3.
+ Stub field
+ Value array
+
+
+ Array test #4.
+ Value array
+ Stub field
+
+
+ Array test #5.
+ Value array
+ Value array
+
+
+ Array test #6.
+ Stub field
+ Stub field
+ Stub field
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #7.
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+ Value array
+
+
+ Array test #8.
+ Stub field
+ Value array
+ Value array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/slugs.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/slugs.xml
new file mode 100755
index 000000000..a985eab38
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/slugs.xml
@@ -0,0 +1,339 @@
+
+
+ common.xml
+
+
+
+
+
+ Does nothing.
+ 1 to arm, 0 to disarm
+
+
+
+
+
+ Return vehicle to base.
+ 0: return to base, 1: track mobile base
+
+
+ Stops the vehicle from returning to base and resumes flight.
+
+
+ Turns the vehicle's visible or infrared lights on or off.
+ 0: visible lights, 1: infrared lights
+ 0: turn on, 1: turn off
+
+
+ Requests vehicle to send current mid-level commands to ground station.
+
+
+ Requests storage of mid-level commands.
+ Mid-level command storage: 0: read from flash/EEPROM, 1: write to flash/EEPROM
+
+
+
+
+
+ Slugs-specific navigation modes.
+
+ No change to SLUGS mode.
+
+
+ Vehicle is in liftoff mode.
+
+
+ Vehicle is in passthrough mode, being controlled by a pilot.
+
+
+ Vehicle is in waypoint mode, navigating to waypoints.
+
+
+ Vehicle is executing mid-level commands.
+
+
+ Vehicle is returning to the home location.
+
+
+ Vehicle is landing.
+
+
+ Lost connection with vehicle.
+
+
+ Vehicle is in selective passthrough mode, where selected surfaces are being manually controlled.
+
+
+ Vehicle is in ISR mode, performing reconaissance at a point specified by ISR_LOCATION message.
+
+
+ Vehicle is patrolling along lines between waypoints.
+
+
+ Vehicle is grounded or an error has occurred.
+
+
+
+
+ These flags encode the control surfaces for selective passthrough mode. If a bit is set then the pilot console
+ has control of the surface, and if not then the autopilot has control of the surface.
+
+ 0b10000000 Throttle control passes through to pilot console.
+
+
+ 0b01000000 Left aileron control passes through to pilot console.
+
+
+ 0b00100000 Right aileron control passes through to pilot console.
+
+
+ 0b00010000 Rudder control passes through to pilot console.
+
+
+ 0b00001000 Left elevator control passes through to pilot console.
+
+
+ 0b00000100 Right elevator control passes through to pilot console.
+
+
+ 0b00000010 Left flap control passes through to pilot console.
+
+
+ 0b00000001 Right flap control passes through to pilot console.
+
+
+
+
+
+
+
+ Sensor and DSC control loads.
+ Sensor DSC Load
+ Control DSC Load
+ Battery Voltage in millivolts
+
+
+
+ Accelerometer and gyro biases.
+ Accelerometer X bias (m/s)
+ Accelerometer Y bias (m/s)
+ Accelerometer Z bias (m/s)
+ Gyro X bias (rad/s)
+ Gyro Y bias (rad/s)
+ Gyro Z bias (rad/s)
+
+
+
+ Configurable diagnostic messages.
+ Diagnostic float 1
+ Diagnostic float 2
+ Diagnostic float 3
+ Diagnostic short 1
+ Diagnostic short 2
+ Diagnostic short 3
+
+
+
+ Data used in the navigation algorithm.
+ Measured Airspeed prior to the nav filter in m/s
+ Commanded Roll
+ Commanded Pitch
+ Commanded Turn rate
+ Y component of the body acceleration
+ Total Distance to Run on this leg of Navigation
+ Remaining distance to Run on this leg of Navigation
+ Origin WP
+ Destination WP
+ Commanded altitude in 0.1 m
+
+
+
+ Configurable data log probes to be used inside Simulink
+ Log value 1
+ Log value 2
+ Log value 3
+ Log value 4
+ Log value 5
+ Log value 6
+
+
+
+ Pilot console PWM messges.
+ Year reported by Gps
+ Month reported by Gps
+ Day reported by Gps
+ Hour reported by Gps
+ Min reported by Gps
+ Sec reported by Gps
+ Clock Status. See table 47 page 211 OEMStar Manual
+ Visible satellites reported by Gps
+ Used satellites in Solution
+ GPS+GLONASS satellites in Solution
+ GPS and GLONASS usage mask (bit 0 GPS_used? bit_4 GLONASS_used?)
+ Percent used GPS
+
+
+
+ Mid Level commands sent from the GS to the autopilot. These are only sent when being operated in mid-level commands mode from the ground.
+ The system setting the commands
+ Commanded Altitude in meters
+ Commanded Airspeed in m/s
+ Commanded Turnrate in rad/s
+
+
+
+ This message sets the control surfaces for selective passthrough mode.
+ The system setting the commands
+ Bitfield containing the passthrough configuration, see CONTROL_SURFACE_FLAG ENUM.
+
+
+
+ Orders generated to the SLUGS camera mount.
+ The system reporting the action
+ Order the mount to pan: -1 left, 0 No pan motion, +1 right
+ Order the mount to tilt: -1 down, 0 No tilt motion, +1 up
+ Order the zoom values 0 to 10
+ Orders the camera mount to move home. The other fields are ignored when this field is set. 1: move home, 0 ignored
+
+
+
+ Control for surface; pending and order to origin.
+ The system setting the commands
+ ID control surface send 0: throttle 1: aileron 2: elevator 3: rudder
+ Pending
+ Order to origin
+
+
+
+
+
+
+ Transmits the last known position of the mobile GS to the UAV. Very relevant when Track Mobile is enabled
+ The system reporting the action
+ Mobile Latitude
+ Mobile Longitude
+
+
+
+ Control for camara.
+ The system setting the commands
+ ID 0: brightness 1: aperture 2: iris 3: ICR 4: backlight
+ 1: up/on 2: down/off 3: auto/reset/no action
+
+
+
+ Transmits the position of watch
+ The system reporting the action
+ ISR Latitude
+ ISR Longitude
+ ISR Height
+ Option 1
+ Option 2
+ Option 3
+
+
+
+
+
+
+ Transmits the readings from the voltage and current sensors
+ It is the value of reading 2: 0 - Current, 1 - Foreward Sonar, 2 - Back Sonar, 3 - RPM
+ Voltage in uS of PWM. 0 uS = 0V, 20 uS = 21.5V
+ Depends on the value of r2Type (0) Current consumption in uS of PWM, 20 uS = 90Amp (1) Distance in cm (2) Distance in cm (3) Absolute value
+
+
+
+ Transmits the actual Pan, Tilt and Zoom values of the camera unit
+ The actual Zoom Value
+ The Pan value in 10ths of degree
+ The Tilt value in 10ths of degree
+
+
+
+ Transmits the actual status values UAV in flight
+ The ID system reporting the action
+ Latitude UAV
+ Longitude UAV
+ Altitude UAV
+ Speed UAV
+ Course UAV
+
+
+
+ This contains the status of the GPS readings
+ Number of times checksum has failed
+ The quality indicator, 0=fix not available or invalid, 1=GPS fix, 2=C/A differential GPS, 6=Dead reckoning mode, 7=Manual input mode (fixed position), 8=Simulator mode, 9= WAAS a
+ Indicates if GN, GL or GP messages are being received
+ A = data valid, V = data invalid
+ Magnetic variation, degrees
+ Magnetic variation direction E/W. Easterly variation (E) subtracts from True course and Westerly variation (W) adds to True course
+ Positioning system mode indicator. A - Autonomous;D-Differential; E-Estimated (dead reckoning) mode;M-Manual input; N-Data not valid
+
+
+
+ Transmits the diagnostics data from the Novatel OEMStar GPS
+ The Time Status. See Table 8 page 27 Novatel OEMStar Manual
+ Status Bitfield. See table 69 page 350 Novatel OEMstar Manual
+ solution Status. See table 44 page 197
+ position type. See table 43 page 196
+ velocity type. See table 43 page 196
+ Age of the position solution in seconds
+ Times the CRC has failed since boot
+
+
+
+ Diagnostic data Sensor MCU
+ Float field 1
+ Float field 2
+ Int 16 field 1
+ Int 8 field 1
+
+
+
+
+ The boot message indicates that a system is starting. The onboard software version allows to keep track of onboard soft/firmware revisions. This message allows the sensor and control MCUs to communicate version numbers on startup.
+ The onboard software version
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/test.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/test.xml
new file mode 100644
index 000000000..02bc03204
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/test.xml
@@ -0,0 +1,31 @@
+
+
+ 3
+
+
+ Test all field types
+ char
+ string
+ uint8_t
+ uint16_t
+ uint32_t
+ uint64_t
+ int8_t
+ int16_t
+ int32_t
+ int64_t
+ float
+ double
+ uint8_t_array
+ uint16_t_array
+ uint32_t_array
+ uint64_t_array
+ int8_t_array
+ int16_t_array
+ int32_t_array
+ int64_t_array
+ float_array
+ double_array
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/uAvionix.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/uAvionix.xml
new file mode 100644
index 000000000..627a01bb0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/uAvionix.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+ State flags for ADS-B transponder dynamic report
+
+
+
+
+
+
+
+ Transceiver RF control flags for ADS-B transponder dynamic reports
+
+
+
+
+
+ Status for ADS-B transponder dynamic input
+
+
+
+
+
+
+
+
+ Status flags for ADS-B transponder dynamic output
+
+
+
+
+
+
+ Definitions for aircraft size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GPS lataral offset encoding
+
+
+
+
+
+
+
+
+
+
+ GPS longitudinal offset encoding
+
+
+
+
+ Emergency status encoding
+
+
+
+
+
+
+
+
+
+
+
+
+ Static data to configure the ADS-B transponder (send within 10 sec of a POR and every 10 sec thereafter)
+ Vehicle address (24 bit)
+ Vehicle identifier (8 characters, null terminated, valid characters are A-Z, 0-9, " " only)
+ Transmitting vehicle type. See ADSB_EMITTER_TYPE enum
+ Aircraft length and width encoding (table 2-35 of DO-282B)
+ GPS antenna lateral offset (table 2-36 of DO-282B)
+ GPS antenna longitudinal offset from nose [if non-zero, take position (in meters) divide by 2 and add one] (table 2-37 DO-282B)
+ Aircraft stall speed in cm/s
+ ADS-B transponder reciever and transmit enable flags
+
+
+ Dynamic data used to generate ADS-B out transponder data (send at 5Hz)
+ UTC time in seconds since GPS epoch (Jan 6, 1980). If unknown set to UINT32_MAX
+ Latitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Longitude WGS84 (deg * 1E7). If unknown set to INT32_MAX
+ Altitude in mm (m * 1E-3) UP +ve. WGS84 altitude. If unknown set to INT32_MAX
+ 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: DGPS, 5: RTK
+ Number of satellites visible. If unknown set to UINT8_MAX
+ Barometric pressure altitude relative to a standard atmosphere of 1013.2 mBar and NOT bar corrected altitude (m * 1E-3). (up +ve). If unknown set to INT32_MAX
+ Horizontal accuracy in mm (m * 1E-3). If unknown set to UINT32_MAX
+ Vertical accuracy in cm. If unknown set to UINT16_MAX
+ Velocity accuracy in mm/s (m * 1E-3). If unknown set to UINT16_MAX
+ GPS vertical speed in cm/s. If unknown set to INT16_MAX
+ North-South velocity over ground in cm/s North +ve. If unknown set to INT16_MAX
+ East-West velocity over ground in cm/s East +ve. If unknown set to INT16_MAX
+ Emergency status
+ ADS-B transponder dynamic input state flags
+ Mode A code (typically 1200 [0x04B0] for VFR)
+
+
+ Transceiver heartbeat with health report (updated every 10s)
+ ADS-B transponder messages
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ualberta.xml b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ualberta.xml
new file mode 100644
index 000000000..bb57e8435
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/message_definitions/v1.0/ualberta.xml
@@ -0,0 +1,76 @@
+
+
+ common.xml
+
+
+ Available autopilot modes for ualberta uav
+
+ Raw input pulse widts sent to output
+
+
+ Inputs are normalized using calibration, the converted back to raw pulse widths for output
+
+
+ dfsdfs
+
+
+ dfsfds
+
+
+ dfsdfsdfs
+
+
+
+ Navigation filter mode
+
+
+ AHRS mode
+
+
+ INS/GPS initialization mode
+
+
+ INS/GPS mode
+
+
+
+ Mode currently commanded by pilot
+
+ sdf
+
+
+ dfs
+
+
+ Rotomotion mode
+
+
+
+
+
+ Accelerometer and Gyro biases from the navigation filter
+ Timestamp (microseconds)
+ b_f[0]
+ b_f[1]
+ b_f[2]
+ b_f[0]
+ b_f[1]
+ b_f[2]
+
+
+ Complete set of calibration parameters for the radio
+ Aileron setpoints: left, center, right
+ Elevator setpoints: nose down, center, nose up
+ Rudder setpoints: nose left, center, nose right
+ Tail gyro mode/gain setpoints: heading hold, rate mode
+ Pitch curve setpoints (every 25%)
+ Throttle curve setpoints (every 25%)
+
+
+ System status specific to ualberta uav
+ System mode, see UALBERTA_AUTOPILOT_MODE ENUM
+ Navigation mode, see UALBERTA_NAV_MODE ENUM
+ Pilot mode, see UALBERTA_PILOT_MODE
+
+
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/PKG-INFO b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/PKG-INFO
new file mode 100644
index 000000000..47473b851
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/PKG-INFO
@@ -0,0 +1,17 @@
+Metadata-Version: 1.1
+Name: pymavlink
+Version: 2.0.8
+Summary: Python MAVLink code
+Home-page: http://github.com/mavlink/mavlink
+Author: UNKNOWN
+Author-email: UNKNOWN
+License: LGPLv3
+Description: A Python library for handling MAVLink protocol streams and log files. This allows for the creation of simple scripts to analyse telemetry logs from autopilots such as ArduPilot which use the MAVLink protocol. See the scripts that come with the package for examples of small, useful scripts that use pymavlink. For more information about the MAVLink protocol see http://qgroundcontrol.org/mavlink/
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Console
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Topic :: Scientific/Engineering
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/SOURCES.txt b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/SOURCES.txt
new file mode 100644
index 000000000..5d059ac3d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/SOURCES.txt
@@ -0,0 +1,154 @@
+README.txt
+setup.py
+./DFReader.py
+./__init__.py
+./fgFDM.py
+./mavexpression.py
+./mavextra.py
+./mavparm.py
+./mavutil.py
+./mavwp.py
+./quaternion.py
+./rotmat.py
+./../message_definitions/v1.0/ASLUAV.xml
+./../message_definitions/v1.0/ardupilotmega.xml
+./../message_definitions/v1.0/autoquad.xml
+./../message_definitions/v1.0/common.xml
+./../message_definitions/v1.0/matrixpilot.xml
+./../message_definitions/v1.0/minimal.xml
+./../message_definitions/v1.0/paparazzi.xml
+./../message_definitions/v1.0/python_array_test.xml
+./../message_definitions/v1.0/slugs.xml
+./../message_definitions/v1.0/test.xml
+./../message_definitions/v1.0/uAvionix.xml
+./../message_definitions/v1.0/ualberta.xml
+./dialects/__init__.py
+./dialects/v10/ASLUAV.py
+./dialects/v10/ASLUAV.xml
+./dialects/v10/__init__.py
+./dialects/v10/ardupilotmega.py
+./dialects/v10/ardupilotmega.xml
+./dialects/v10/autoquad.py
+./dialects/v10/autoquad.xml
+./dialects/v10/common.py
+./dialects/v10/common.xml
+./dialects/v10/matrixpilot.py
+./dialects/v10/matrixpilot.xml
+./dialects/v10/minimal.py
+./dialects/v10/minimal.xml
+./dialects/v10/paparazzi.py
+./dialects/v10/paparazzi.xml
+./dialects/v10/python_array_test.py
+./dialects/v10/python_array_test.xml
+./dialects/v10/slugs.py
+./dialects/v10/slugs.xml
+./dialects/v10/test.py
+./dialects/v10/test.xml
+./dialects/v10/uAvionix.py
+./dialects/v10/uAvionix.xml
+./dialects/v10/ualberta.py
+./dialects/v10/ualberta.xml
+./dialects/v20/ASLUAV.py
+./dialects/v20/ASLUAV.xml
+./dialects/v20/__init__.py
+./dialects/v20/ardupilotmega.py
+./dialects/v20/ardupilotmega.xml
+./dialects/v20/autoquad.py
+./dialects/v20/autoquad.xml
+./dialects/v20/common.py
+./dialects/v20/common.xml
+./dialects/v20/matrixpilot.py
+./dialects/v20/matrixpilot.xml
+./dialects/v20/minimal.py
+./dialects/v20/minimal.xml
+./dialects/v20/paparazzi.py
+./dialects/v20/paparazzi.xml
+./dialects/v20/python_array_test.py
+./dialects/v20/python_array_test.xml
+./dialects/v20/slugs.py
+./dialects/v20/slugs.xml
+./dialects/v20/test.py
+./dialects/v20/test.xml
+./dialects/v20/uAvionix.py
+./dialects/v20/uAvionix.xml
+./dialects/v20/ualberta.py
+./dialects/v20/ualberta.xml
+./generator/__init__.py
+./generator/mavcrc.py
+./generator/mavgen.py
+./generator/mavgen_c.py
+./generator/mavgen_cs.py
+./generator/mavgen_java.py
+./generator/mavgen_javascript.py
+./generator/mavgen_objc.py
+./generator/mavgen_python.py
+./generator/mavgen_swift.py
+./generator/mavgen_wlua.py
+./generator/mavparse.py
+./generator/mavschema.xsd
+./generator/mavtemplate.py
+./generator/mavtestgen.py
+./generator/C/include_v1.0/checksum.h
+./generator/C/include_v1.0/mavlink_conversions.h
+./generator/C/include_v1.0/mavlink_helpers.h
+./generator/C/include_v1.0/mavlink_types.h
+./generator/C/include_v1.0/protocol.h
+./generator/C/include_v2.0/checksum.h
+./generator/C/include_v2.0/mavlink_conversions.h
+./generator/C/include_v2.0/mavlink_get_info.h
+./generator/C/include_v2.0/mavlink_helpers.h
+./generator/C/include_v2.0/mavlink_sha256.h
+./generator/C/include_v2.0/mavlink_types.h
+./generator/C/include_v2.0/protocol.h
+./generator/java/lib/Parser.java
+./generator/java/lib/Messages/MAVLinkMessage.java
+./generator/java/lib/Messages/MAVLinkPayload.java
+./generator/java/lib/Messages/MAVLinkStats.java
+./mavnative/mavlink_defaults.h
+./message_definitions/v0.9/ardupilotmega.xml
+./message_definitions/v0.9/common.xml
+./message_definitions/v0.9/minimal.xml
+./message_definitions/v0.9/slugs.xml
+./message_definitions/v0.9/test.xml
+./message_definitions/v0.9/ualberta.xml
+./message_definitions/v1.0/ASLUAV.xml
+./message_definitions/v1.0/ardupilotmega.xml
+./message_definitions/v1.0/autoquad.xml
+./message_definitions/v1.0/common.xml
+./message_definitions/v1.0/matrixpilot.xml
+./message_definitions/v1.0/minimal.xml
+./message_definitions/v1.0/paparazzi.xml
+./message_definitions/v1.0/python_array_test.xml
+./message_definitions/v1.0/slugs.xml
+./message_definitions/v1.0/test.xml
+./message_definitions/v1.0/uAvionix.xml
+./message_definitions/v1.0/ualberta.xml
+mavnative/mavnative.c
+pymavlink.egg-info/PKG-INFO
+pymavlink.egg-info/SOURCES.txt
+pymavlink.egg-info/dependency_links.txt
+pymavlink.egg-info/top_level.txt
+tools/MPU6KSearch.py
+tools/magfit.py
+tools/magfit_delta.py
+tools/magfit_gps.py
+tools/magfit_motors.py
+tools/mavextract.py
+tools/mavfft.py
+tools/mavflightmodes.py
+tools/mavflighttime.py
+tools/mavgen.py
+tools/mavgpslock.py
+tools/mavgraph.py
+tools/mavkml.py
+tools/mavlogdump.py
+tools/mavloss.py
+tools/mavmission.py
+tools/mavparmdiff.py
+tools/mavparms.py
+tools/mavplayback.py
+tools/mavsearch.py
+tools/mavsigloss.py
+tools/mavsummarize.py
+tools/mavtogpx.py
+tools/mavtomfile.py
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/dependency_links.txt b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/dependency_links.txt
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/top_level.txt b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/top_level.txt
new file mode 100644
index 000000000..af2f860b1
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/pymavlink.egg-info/top_level.txt
@@ -0,0 +1,2 @@
+mavnative
+pymavlink
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/quaternion.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/quaternion.py
new file mode 100644
index 000000000..79bf9cd05
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/quaternion.py
@@ -0,0 +1,632 @@
+#!/usr/bin/env python
+
+
+"""
+Quaternion implementation for use in pymavlink
+"""
+
+from __future__ import absolute_import, division, print_function
+import numpy as np
+from .rotmat import Vector3, Matrix3
+
+__author__ = "Thomas Gubler"
+__copyright__ = "Copyright (C) 2014 Thomas Gubler"
+__license__ = "GNU Lesser General Public License v3"
+__email__ = "thomasgubler@gmail.com"
+
+
+class QuaternionBase(object):
+
+ """
+ Quaternion class, this is the version which supports numpy arrays
+ If you need support for Matrix3 look at the Quaternion class
+
+ Usage:
+ >>> from quaternion import QuaternionBase
+ >>> import numpy as np
+ >>> q = QuaternionBase([np.radians(20), np.radians(20), np.radians(20)])
+ >>> print(q)
+ [ 0.9603483 0.13871646 0.19810763 0.13871646]
+ >>> print(q.dcm)
+ [[ 0.88302222 -0.21147065 0.41898917]
+ [ 0.3213938 0.92303098 -0.21147065]
+ [-0.34202014 0.3213938 0.88302222]]
+ >>> q = QuaternionBase([1, 0, 0, 0])
+ >>> print(q.euler)
+ [ 0. -0. 0.]
+ >>> m = [[1, 0, 0], [0, 0, -1], [0, 1, 0]]
+ >>> q = QuaternionBase(m)
+ >>> vector = [0, 1, 0]
+ >>> vector2 = q.transform(vector)
+ """
+
+ def __init__(self, attitude=[1, 0, 0, 0]):
+ """
+ Construct a quaternion from an attitude
+
+ :param attitude: another QuaternionBase,
+ 3 element list [roll, pitch, yaw],
+ 4 element list [w, x, y ,z], DCM (3x3 array)
+ """
+ if isinstance(attitude, QuaternionBase):
+ self.q = attitude.q
+ elif np.array(attitude).shape == (3, 3):
+ self.dcm = attitude
+ elif len(attitude) == 4:
+ self.q = attitude
+ elif len(attitude) == 3:
+ self.euler = attitude
+ else:
+ raise TypeError("attitude is not valid")
+
+ @property
+ def q(self):
+ """
+ Get the quaternion
+ :returns: array containing the quaternion elements
+ """
+ if self._q is None:
+ if self._euler is not None:
+ # get q from euler
+ self._q = self._euler_to_q(self.euler)
+ elif self._dcm is not None:
+ # get q from DCM
+ self._q = self._dcm_to_q(self.dcm)
+ return self._q
+
+ def __getitem__(self, index):
+ """Returns the quaternion entry at index"""
+ return self.q[index]
+
+ @q.setter
+ def q(self, q):
+ """
+ Set the quaternion
+ :param q: list or array of quaternion values [w, x, y, z]
+ """
+ self._q = np.array(q)
+
+ # mark other representations as outdated, will get generated on next
+ # read
+ self._euler = None
+ self._dcm = None
+
+ @property
+ def euler(self):
+ """
+ Get the euler angles.
+ The convention is Tait-Bryan (ZY'X'')
+
+ :returns: array containing the euler angles [roll, pitch, yaw]
+ """
+ if self._euler is None:
+ if self._q is not None:
+ # try to get euler angles from q via DCM
+ self._dcm = self._q_to_dcm(self.q)
+ self._euler = self._dcm_to_euler(self.dcm)
+ elif self._dcm is not None:
+ # get euler angles from DCM
+ self._euler = self._dcm_to_euler(self.dcm)
+ return self._euler
+
+ @euler.setter
+ def euler(self, euler):
+ """
+ Set the euler angles
+ :param euler: list or array of the euler angles [roll, pitch, yaw]
+
+ """
+ assert(len(euler) == 3)
+ self._euler = np.array(euler)
+
+ # mark other representations as outdated, will get generated on next
+ # read
+ self._q = None
+ self._dcm = None
+
+ @property
+ def dcm(self):
+ """
+ Get the DCM
+
+ :returns: 3x3 array
+ """
+ if self._dcm is None:
+ if self._q is not None:
+ # try to get dcm from q
+ self._dcm = self._q_to_dcm(self.q)
+ elif self._euler is not None:
+ # try to get get dcm from euler
+ self._dcm = self._euler_to_dcm(self._euler)
+ return self._dcm
+
+ @dcm.setter
+ def dcm(self, dcm):
+ """
+ Set the DCM
+ :param dcm: 3x3 array
+
+ """
+ assert(len(dcm) == 3)
+ for sub in dcm:
+ assert(len(sub) == 3)
+
+ self._dcm = np.array(dcm)
+
+ # mark other representations as outdated, will get generated on next
+ # read
+ self._q = None
+ self._euler = None
+
+ def transform(self, v):
+ """
+ Calculates the vector transformed by this quaternion
+ :param v: array with len 3 to be transformed
+ :returns: transformed vector
+ """
+ assert(len(v) == 3)
+ assert(np.allclose(self.norm, 1))
+ # perform transformation t = q * [0, v] * q^-1 but avoid multiplication
+ # because terms cancel out
+ q0 = self.q[0]
+ qi = self.q[1:4]
+ ui = np.array(v)
+ a = q0 * ui + np.cross(qi, ui)
+ t = np.dot(qi, ui) * qi + q0 * a - np.cross(a, qi)
+ return t
+
+ @property
+ def norm(self):
+ """
+ Returns norm of quaternion
+
+ :returns: norm (scalar)
+ """
+ return QuaternionBase.norm_array(self.q)
+
+ def normalize(self):
+ """Normalizes the quaternion"""
+ self.q = QuaternionBase.normalize_array(self.q)
+
+ @property
+ def inversed(self):
+ """
+ Get inversed quaternion
+
+ :returns: inversed quaternion
+ """
+ q_inv = self._q_inversed(self.q)
+ return QuaternionBase(q_inv)
+
+ def __eq__(self, other):
+ """
+ Equality test (same orientation, not necessarily same rotation)
+
+ :param other: a QuaternionBase
+ :returns: true if the quaternions are equal
+ """
+ if isinstance(other, QuaternionBase):
+ return abs(self.q.dot(other.q)) > 1 - np.finfo(float).eps
+ return NotImplemented
+
+ def close(self, other):
+ """
+ Equality test with tolerance
+ (same orientation, not necessarily same rotation)
+
+
+ :param other: a QuaternionBase
+ :returns: true if the quaternions are almost equal
+ """
+ if isinstance(other, QuaternionBase):
+ return np.allclose(self.q, other.q) or np.allclose(self.q, -other.q)
+ return NotImplemented
+
+ def __mul__(self, other):
+ """
+ :param other: QuaternionBase
+ :returns: multiplaction of this Quaternion with other
+ """
+ if isinstance(other, QuaternionBase):
+ o = other.q
+ elif len(other) == 4:
+ o = other
+ else:
+ return NotImplemented
+
+ return QuaternionBase(self._mul_array(self.q, o))
+
+ def __truediv__(self, other):
+ """
+ :param other: QuaternionBase
+ :returns: division of this Quaternion with other
+ """
+ if isinstance(other, QuaternionBase):
+ o = other
+ elif len(other) == 4:
+ o = QuaternionBase(other)
+ else:
+ return NotImplemented
+ return self * o.inversed
+
+ @staticmethod
+ def normalize_array(q):
+ """
+ Normalizes the list with len 4 so that it can be used as quaternion
+ :param q: array of len 4
+ :returns: normalized array
+ """
+ assert(len(q) == 4)
+ q = np.array(q)
+ n = QuaternionBase.norm_array(q)
+ return q / n
+
+ @staticmethod
+ def norm_array(q):
+ """
+ Calculate quaternion norm on array q
+ :param quaternion: array of len 4
+ :returns: norm (scalar)
+ """
+ assert(len(q) == 4)
+ return np.sqrt(np.dot(q, q))
+
+ def _mul_array(self, p, q):
+ """
+ Performs multiplication of the 2 quaterniona arrays p and q
+ :param p: array of len 4
+ :param q: array of len 4
+ :returns: array of len, result of p * q (with p, q quaternions)
+ """
+ assert(len(q) == len(p) == 4)
+ p0 = p[0]
+ pi = p[1:4]
+ q0 = q[0]
+ qi = q[1:4]
+
+ res = np.zeros(4)
+ res[0] = p0 * q0 - np.dot(pi, qi)
+ res[1:4] = p0 * qi + q0 * pi + np.cross(pi, qi)
+
+ return res
+
+ def _euler_to_q(self, euler):
+ """
+ Create q array from euler angles
+ :param euler: array [roll, pitch, yaw] in rad
+ :returns: array q which represents a quaternion [w, x, y, z]
+ """
+ assert(len(euler) == 3)
+ phi = euler[0]
+ theta = euler[1]
+ psi = euler[2]
+ c_phi_2 = np.cos(phi / 2)
+ s_phi_2 = np.sin(phi / 2)
+ c_theta_2 = np.cos(theta / 2)
+ s_theta_2 = np.sin(theta / 2)
+ c_psi_2 = np.cos(psi / 2)
+ s_psi_2 = np.sin(psi / 2)
+ q = np.zeros(4)
+ q[0] = (c_phi_2 * c_theta_2 * c_psi_2 +
+ s_phi_2 * s_theta_2 * s_psi_2)
+ q[1] = (s_phi_2 * c_theta_2 * c_psi_2 -
+ c_phi_2 * s_theta_2 * s_psi_2)
+ q[2] = (c_phi_2 * s_theta_2 * c_psi_2 +
+ s_phi_2 * c_theta_2 * s_psi_2)
+ q[3] = (c_phi_2 * c_theta_2 * s_psi_2 -
+ s_phi_2 * s_theta_2 * c_psi_2)
+ return q
+
+ def _q_to_dcm(self, q):
+ """
+ Create DCM from q
+ :param q: array q which represents a quaternion [w, x, y, z]
+ :returns: 3x3 dcm array
+ """
+ assert(len(q) == 4)
+ assert(np.allclose(QuaternionBase.norm_array(q), 1))
+ dcm = np.zeros([3, 3])
+ a = q[0]
+ b = q[1]
+ c = q[2]
+ d = q[3]
+ a_sq = a * a
+ b_sq = b * b
+ c_sq = c * c
+ d_sq = d * d
+ dcm[0][0] = a_sq + b_sq - c_sq - d_sq
+ dcm[0][1] = 2 * (b * c - a * d)
+ dcm[0][2] = 2 * (a * c + b * d)
+ dcm[1][0] = 2 * (b * c + a * d)
+ dcm[1][1] = a_sq - b_sq + c_sq - d_sq
+ dcm[1][2] = 2 * (c * d - a * b)
+ dcm[2][0] = 2 * (b * d - a * c)
+ dcm[2][1] = 2 * (a * b + c * d)
+ dcm[2][2] = a_sq - b_sq - c_sq + d_sq
+ return dcm
+
+ def _dcm_to_q(self, dcm):
+ """
+ Create q from dcm
+ Reference:
+ - Shoemake, Quaternions,
+ http://www.cs.ucr.edu/~vbz/resources/quatut.pdf
+
+ :param dcm: 3x3 dcm array
+ returns: quaternion array
+ """
+ assert(dcm.shape == (3, 3))
+ q = np.zeros(4)
+
+ tr = np.trace(dcm)
+ if tr > 0:
+ s = np.sqrt(tr + 1.0)
+ q[0] = s * 0.5
+ s = 0.5 / s
+ q[1] = (dcm[2][1] - dcm[1][2]) * s
+ q[2] = (dcm[0][2] - dcm[2][0]) * s
+ q[3] = (dcm[1][0] - dcm[0][1]) * s
+ else:
+ dcm_i = np.argmax(np.diag(dcm))
+ dcm_j = (dcm_i + 1) % 3
+ dcm_k = (dcm_i + 2) % 3
+
+ s = np.sqrt((dcm[dcm_i][dcm_i] - dcm[dcm_j][dcm_j] -
+ dcm[dcm_k][dcm_k]) + 1.0)
+ q[dcm_i + 1] = s * 0.5
+ s = 0.5 / s
+ q[dcm_j + 1] = (dcm[dcm_i][dcm_j] + dcm[dcm_j][dcm_i]) * s
+ q[dcm_k + 1] = (dcm[dcm_k][dcm_i] + dcm[dcm_i][dcm_k]) * s
+ q[0] = (dcm[dcm_k][dcm_j] - dcm[dcm_j][dcm_k]) * s
+
+ return q
+
+ def _euler_to_dcm(self, euler):
+ """
+ Create DCM from euler angles
+ :param euler: array [roll, pitch, yaw] in rad
+ :returns: 3x3 dcm array
+ """
+ assert(len(euler) == 3)
+ phi = euler[0]
+ theta = euler[1]
+ psi = euler[2]
+ dcm = np.zeros([3, 3])
+ c_phi = np.cos(phi)
+ s_phi = np.sin(phi)
+ c_theta = np.cos(theta)
+ s_theta = np.sin(theta)
+ c_psi = np.cos(psi)
+ s_psi = np.sin(psi)
+
+ dcm[0][0] = c_theta * c_psi
+ dcm[0][1] = -c_phi * s_psi + s_phi * s_theta * c_psi
+ dcm[0][2] = s_phi * s_psi + c_phi * s_theta * c_psi
+
+ dcm[1][0] = c_theta * s_psi
+ dcm[1][1] = c_phi * c_psi + s_phi * s_theta * s_psi
+ dcm[1][2] = -s_phi * c_psi + c_phi * s_theta * s_psi
+
+ dcm[2][0] = -s_theta
+ dcm[2][1] = s_phi * c_theta
+ dcm[2][2] = c_phi * c_theta
+ return dcm
+
+ def _dcm_to_euler(self, dcm):
+ """
+ Create DCM from euler angles
+ :param dcm: 3x3 dcm array
+ :returns: array [roll, pitch, yaw] in rad
+ """
+ assert(dcm.shape == (3, 3))
+ theta = np.arcsin(min(1, max(-1, -dcm[2][0])))
+
+ if abs(theta - np.pi/2) < 1.0e-3:
+ phi = 0.0
+ psi = (np.arctan2(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1]) + phi)
+ elif abs(theta + np.pi/2) < 1.0e-3:
+ phi = 0.0
+ psi = np.arctan2(dcm[1][2] - dcm[0][1],
+ dcm[0][2] + dcm[1][1] - phi)
+ else:
+ phi = np.arctan2(dcm[2][1], dcm[2][2])
+ psi = np.arctan2(dcm[1][0], dcm[0][0])
+
+ return np.array([phi, theta, psi])
+
+ def _q_inversed(self, q):
+ """
+ Returns inversed quaternion q
+ :param q: array q which represents a quaternion [w, x, y, z]
+ :returns: inversed array q which is a quaternion [w, x, y ,z]
+ """
+ assert(len(q) == 4)
+ return np.hstack([q[0], -q[1:4]])
+
+ def __str__(self):
+ """String of quaternion values"""
+ return str(self.q)
+
+
+class Quaternion(QuaternionBase):
+
+ """
+ Quaternion class that supports pymavlink's Vector3 and Matrix3
+
+ Usage:
+ >>> from quaternion import Quaternion
+ >>> from rotmat import Vector3, Matrix3
+ >>> m = Matrix3()
+ >>> m.from_euler(45, 0, 0)
+ >>> print(m)
+ Matrix3((1.00, 0.00, 0.00), (0.00, 0.53, -0.85), (-0.00, 0.85, 0.53))
+ >>> q = Quaternion(m)
+ >>> print(q)
+ [ 0.87330464 0.48717451 0. 0. ]
+ >>> print(q.dcm)
+ Matrix3((1.00, 0.00, 0.00), (0.00, 0.53, -0.85), (-0.00, 0.85, 0.53))
+ >>> v = Vector3(0, 1, 0)
+ >>> v2 = q.transform(v)
+ >>> print(v2)
+ Vector3(0.00, 0.53, 0.85)
+ """
+
+ def __init__(self, attitude):
+ """
+ Construct a quaternion from an attitude
+
+ :param attitude: another Quaternion, QuaternionBase,
+ 3 element list [roll, pitch, yaw],
+ 4 element list [w, x, y ,z], DCM (3x3 array or Matrix3)
+ """
+ if isinstance(attitude, Quaternion):
+ self.q = attitude.q
+ if isinstance(attitude, Matrix3):
+ self.dcm = attitude
+ elif np.array(attitude).shape == (3, 3):
+ # convert dcm array to Matrix3
+ self.dcm = self._dcm_array_to_matrix3(attitude)
+ elif isinstance(attitude, Vector3):
+ # provided euler angles
+ euler = [attitude.x, attitude.y, attitude.z]
+ super(Quaternion, self).__init__(euler)
+ else:
+ super(Quaternion, self).__init__(attitude)
+
+ @property
+ def dcm(self):
+ """
+ Get the DCM
+
+ :returns: Matrix3
+ """
+ if self._dcm is None:
+ if self._q is not None:
+ # try to get dcm from q
+ self._dcm = self._q_to_dcm(self.q)
+ elif self._euler is not None:
+ # try to get get dcm from euler
+ self._dcm = self._euler_to_dcm(self._euler)
+ return self._dcm
+
+ @dcm.setter
+ def dcm(self, dcm):
+ """
+ Set the DCM
+ :param dcm: Matrix3
+
+ """
+ assert(isinstance(dcm, Matrix3))
+ self._dcm = dcm.copy()
+
+ # mark other representations as outdated, will get generated on next
+ # read
+ self._q = None
+ self._euler = None
+
+ @property
+ def inversed(self):
+ """
+ Get inversed quaternion
+
+ :returns: inversed quaternion
+ """
+ return Quaternion(super(Quaternion, self).inversed)
+
+ def transform(self, v3):
+ """
+ Calculates the vector transformed by this quaternion
+ :param v3: Vector3 to be transformed
+ :returns: transformed vector
+ """
+ if isinstance(v3, Vector3):
+ t = super(Quaternion, self).transform([v3.x, v3.y, v3.z])
+ return Vector3(t[0], t[1], t[2])
+ elif len(v3) == 3:
+ return super(Quaternion, self).transform(v3)
+ else:
+ raise TypeError("param v3 is not a vector type")
+
+ def _dcm_array_to_matrix3(self, dcm):
+ """
+ Converts dcm array into Matrix3
+ :param dcm: 3x3 dcm array
+ :returns: Matrix3
+ """
+ assert(dcm.shape == (3, 3))
+ a = Vector3(dcm[0][0], dcm[0][1], dcm[0][2])
+ b = Vector3(dcm[1][0], dcm[1][1], dcm[1][2])
+ c = Vector3(dcm[2][0], dcm[2][1], dcm[2][2])
+ return Matrix3(a, b, c)
+
+ def _matrix3_to_dcm_array(self, m):
+ """
+ Converts Matrix3 in an array
+ :param m: Matrix3
+ :returns: 3x3 array
+ """
+ assert(isinstance(m, Matrix3))
+ return np.array([[m.a.x, m.a.y, m.a.z],
+ [m.b.x, m.b.y, m.b.z],
+ [m.c.x, m.c.y, m.c.z]])
+
+ def _q_to_dcm(self, q):
+ """
+ Create DCM (Matrix3) from q
+ :param q: array q which represents a quaternion [w, x, y, z]
+ :returns: Matrix3
+ """
+ assert(len(q) == 4)
+ arr = super(Quaternion, self)._q_to_dcm(q)
+ return self._dcm_array_to_matrix3(arr)
+
+ def _dcm_to_q(self, dcm):
+ """
+ Create q from dcm (Matrix3)
+ :param dcm: Matrix3
+ :returns: array q which represents a quaternion [w, x, y, z]
+ """
+ assert(isinstance(dcm, Matrix3))
+ arr = self._matrix3_to_dcm_array(dcm)
+ return super(Quaternion, self)._dcm_to_q(arr)
+
+ def _euler_to_dcm(self, euler):
+ """
+ Create DCM (Matrix3) from euler angles
+ :param euler: array [roll, pitch, yaw] in rad
+ :returns: Matrix3
+ """
+ assert(len(euler) == 3)
+ m = Matrix3()
+ m.from_euler(*euler)
+ return m
+
+ def _dcm_to_euler(self, dcm):
+ """
+ Create DCM from euler angles
+ :param dcm: Matrix3
+ :returns: array [roll, pitch, yaw] in rad
+ """
+ assert(isinstance(dcm, Matrix3))
+ return np.array(dcm.to_euler())
+
+ def __mul__(self, other):
+ """
+ :param other: Quaternion
+ :returns: multiplaction of this Quaternion with other
+ """
+ return Quaternion(super(Quaternion, self).__mul__(other))
+
+ def __truediv__(self, other):
+ """
+ :param other: Quaternion
+ :returns: division of this Quaternion with other
+ """
+ return Quaternion(super(Quaternion, self).__truediv__(other))
+
+if __name__ == "__main__":
+ import doctest
+ doctest.testmod()
+ import unittest
+ unittest.main('quaterniontest')
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/rotmat.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/rotmat.py
new file mode 100755
index 000000000..f6c3955af
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/rotmat.py
@@ -0,0 +1,406 @@
+#!/usr/bin/env python
+#
+# vector3 and rotation matrix classes
+# This follows the conventions in the ArduPilot code,
+# and is essentially a python version of the AP_Math library
+#
+# Andrew Tridgell, March 2012
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; either version 2.1 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+# for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+'''rotation matrix class
+'''
+
+from math import sin, cos, sqrt, asin, atan2, pi, radians, acos, degrees
+
+class Vector3:
+ '''a vector'''
+ def __init__(self, x=None, y=None, z=None):
+ if x != None and y != None and z != None:
+ self.x = float(x)
+ self.y = float(y)
+ self.z = float(z)
+ elif x != None and len(x) == 3:
+ self.x = float(x[0])
+ self.y = float(x[1])
+ self.z = float(x[2])
+ elif x != None:
+ raise ValueError('bad initialiser')
+ else:
+ self.x = float(0)
+ self.y = float(0)
+ self.z = float(0)
+
+ def __repr__(self):
+ return 'Vector3(%.2f, %.2f, %.2f)' % (self.x,
+ self.y,
+ self.z)
+
+ def __eq__(self, v):
+ return self.x == v.x and self.y == v.y and self.z == v.z
+
+ def __ne__(self, v):
+ return not self == v
+
+ def close(self, v, tol=1e-7):
+ return abs(self.x - v.x) < tol and \
+ abs(self.y - v.y) < tol and \
+ abs(self.z - v.z) < tol
+
+ def __add__(self, v):
+ return Vector3(self.x + v.x,
+ self.y + v.y,
+ self.z + v.z)
+
+ __radd__ = __add__
+
+ def __sub__(self, v):
+ return Vector3(self.x - v.x,
+ self.y - v.y,
+ self.z - v.z)
+
+ def __neg__(self):
+ return Vector3(-self.x, -self.y, -self.z)
+
+ def __rsub__(self, v):
+ return Vector3(v.x - self.x,
+ v.y - self.y,
+ v.z - self.z)
+
+ def __mul__(self, v):
+ if isinstance(v, Vector3):
+ '''dot product'''
+ return self.x*v.x + self.y*v.y + self.z*v.z
+ return Vector3(self.x * v,
+ self.y * v,
+ self.z * v)
+
+ __rmul__ = __mul__
+
+ def __div__(self, v):
+ return Vector3(self.x / v,
+ self.y / v,
+ self.z / v)
+
+ def __mod__(self, v):
+ '''cross product'''
+ return Vector3(self.y*v.z - self.z*v.y,
+ self.z*v.x - self.x*v.z,
+ self.x*v.y - self.y*v.x)
+
+ def __copy__(self):
+ return Vector3(self.x, self.y, self.z)
+
+ copy = __copy__
+
+ def length(self):
+ return sqrt(self.x**2 + self.y**2 + self.z**2)
+
+ def zero(self):
+ self.x = self.y = self.z = 0
+
+ def angle(self, v):
+ '''return the angle between this vector and another vector'''
+ return acos((self * v) / (self.length() * v.length()))
+
+ def normalized(self):
+ return self.__div__(self.length())
+
+ def normalize(self):
+ v = self.normalized()
+ self.x = v.x
+ self.y = v.y
+ self.z = v.z
+
+class Matrix3:
+ '''a 3x3 matrix, intended as a rotation matrix'''
+ def __init__(self, a=None, b=None, c=None):
+ if a is not None and b is not None and c is not None:
+ self.a = a.copy()
+ self.b = b.copy()
+ self.c = c.copy()
+ else:
+ self.identity()
+
+ def __repr__(self):
+ return 'Matrix3((%.2f, %.2f, %.2f), (%.2f, %.2f, %.2f), (%.2f, %.2f, %.2f))' % (
+ self.a.x, self.a.y, self.a.z,
+ self.b.x, self.b.y, self.b.z,
+ self.c.x, self.c.y, self.c.z)
+
+ def identity(self):
+ self.a = Vector3(1,0,0)
+ self.b = Vector3(0,1,0)
+ self.c = Vector3(0,0,1)
+
+ def transposed(self):
+ return Matrix3(Vector3(self.a.x, self.b.x, self.c.x),
+ Vector3(self.a.y, self.b.y, self.c.y),
+ Vector3(self.a.z, self.b.z, self.c.z))
+
+
+ def from_euler(self, roll, pitch, yaw):
+ '''fill the matrix from Euler angles in radians'''
+ cp = cos(pitch)
+ sp = sin(pitch)
+ sr = sin(roll)
+ cr = cos(roll)
+ sy = sin(yaw)
+ cy = cos(yaw)
+
+ self.a.x = cp * cy
+ self.a.y = (sr * sp * cy) - (cr * sy)
+ self.a.z = (cr * sp * cy) + (sr * sy)
+ self.b.x = cp * sy
+ self.b.y = (sr * sp * sy) + (cr * cy)
+ self.b.z = (cr * sp * sy) - (sr * cy)
+ self.c.x = -sp
+ self.c.y = sr * cp
+ self.c.z = cr * cp
+
+
+ def to_euler(self):
+ '''find Euler angles (321 convention) for the matrix'''
+ if self.c.x >= 1.0:
+ pitch = pi
+ elif self.c.x <= -1.0:
+ pitch = -pi
+ else:
+ pitch = -asin(self.c.x)
+ roll = atan2(self.c.y, self.c.z)
+ yaw = atan2(self.b.x, self.a.x)
+ return (roll, pitch, yaw)
+
+
+ def to_euler312(self):
+ '''find Euler angles (312 convention) for the matrix.
+ See http://www.atacolorado.com/eulersequences.doc
+ '''
+ T21 = self.a.y
+ T22 = self.b.y
+ T23 = self.c.y
+ T13 = self.c.x
+ T33 = self.c.z
+ yaw = atan2(-T21, T22)
+ roll = asin(T23)
+ pitch = atan2(-T13, T33)
+ return (roll, pitch, yaw)
+
+ def from_euler312(self, roll, pitch, yaw):
+ '''fill the matrix from Euler angles in radians in 312 convention'''
+ c3 = cos(pitch)
+ s3 = sin(pitch)
+ s2 = sin(roll)
+ c2 = cos(roll)
+ s1 = sin(yaw)
+ c1 = cos(yaw)
+
+ self.a.x = c1 * c3 - s1 * s2 * s3
+ self.b.y = c1 * c2
+ self.c.z = c3 * c2
+ self.a.y = -c2*s1
+ self.a.z = s3*c1 + c3*s2*s1
+ self.b.x = c3*s1 + s3*s2*c1
+ self.b.z = s1*s3 - s2*c1*c3
+ self.c.x = -s3*c2
+ self.c.y = s2
+
+ def __add__(self, m):
+ return Matrix3(self.a + m.a, self.b + m.b, self.c + m.c)
+
+ __radd__ = __add__
+
+ def __sub__(self, m):
+ return Matrix3(self.a - m.a, self.b - m.b, self.c - m.c)
+
+ def __rsub__(self, m):
+ return Matrix3(m.a - self.a, m.b - self.b, m.c - self.c)
+
+ def __mul__(self, other):
+ if isinstance(other, Vector3):
+ v = other
+ return Vector3(self.a.x * v.x + self.a.y * v.y + self.a.z * v.z,
+ self.b.x * v.x + self.b.y * v.y + self.b.z * v.z,
+ self.c.x * v.x + self.c.y * v.y + self.c.z * v.z)
+ elif isinstance(other, Matrix3):
+ m = other
+ return Matrix3(Vector3(self.a.x * m.a.x + self.a.y * m.b.x + self.a.z * m.c.x,
+ self.a.x * m.a.y + self.a.y * m.b.y + self.a.z * m.c.y,
+ self.a.x * m.a.z + self.a.y * m.b.z + self.a.z * m.c.z),
+ Vector3(self.b.x * m.a.x + self.b.y * m.b.x + self.b.z * m.c.x,
+ self.b.x * m.a.y + self.b.y * m.b.y + self.b.z * m.c.y,
+ self.b.x * m.a.z + self.b.y * m.b.z + self.b.z * m.c.z),
+ Vector3(self.c.x * m.a.x + self.c.y * m.b.x + self.c.z * m.c.x,
+ self.c.x * m.a.y + self.c.y * m.b.y + self.c.z * m.c.y,
+ self.c.x * m.a.z + self.c.y * m.b.z + self.c.z * m.c.z))
+ v = other
+ return Matrix3(self.a * v, self.b * v, self.c * v)
+
+ def __div__(self, v):
+ return Matrix3(self.a / v, self.b / v, self.c / v)
+
+ def __neg__(self):
+ return Matrix3(-self.a, -self.b, -self.c)
+
+ def __copy__(self):
+ return Matrix3(self.a, self.b, self.c)
+
+ copy = __copy__
+
+ def rotate(self, g):
+ '''rotate the matrix by a given amount on 3 axes'''
+ temp_matrix = Matrix3()
+ a = self.a
+ b = self.b
+ c = self.c
+ temp_matrix.a.x = a.y * g.z - a.z * g.y
+ temp_matrix.a.y = a.z * g.x - a.x * g.z
+ temp_matrix.a.z = a.x * g.y - a.y * g.x
+ temp_matrix.b.x = b.y * g.z - b.z * g.y
+ temp_matrix.b.y = b.z * g.x - b.x * g.z
+ temp_matrix.b.z = b.x * g.y - b.y * g.x
+ temp_matrix.c.x = c.y * g.z - c.z * g.y
+ temp_matrix.c.y = c.z * g.x - c.x * g.z
+ temp_matrix.c.z = c.x * g.y - c.y * g.x
+ self.a += temp_matrix.a
+ self.b += temp_matrix.b
+ self.c += temp_matrix.c
+
+ def normalize(self):
+ '''re-normalise a rotation matrix'''
+ error = self.a * self.b
+ t0 = self.a - (self.b * (0.5 * error))
+ t1 = self.b - (self.a * (0.5 * error))
+ t2 = t0 % t1
+ self.a = t0 * (1.0 / t0.length())
+ self.b = t1 * (1.0 / t1.length())
+ self.c = t2 * (1.0 / t2.length())
+
+ def trace(self):
+ '''the trace of the matrix'''
+ return self.a.x + self.b.y + self.c.z
+
+ def from_axis_angle(self, axis, angle):
+ '''create a rotation matrix from axis and angle'''
+ ux = axis.x
+ uy = axis.y
+ uz = axis.z
+ ct = cos(angle)
+ st = sin(angle)
+ self.a.x = ct + (1-ct) * ux**2
+ self.a.y = ux*uy*(1-ct) - uz*st
+ self.a.z = ux*uz*(1-ct) + uy*st
+ self.b.x = uy*ux*(1-ct) + uz*st
+ self.b.y = ct + (1-ct) * uy**2
+ self.b.z = uy*uz*(1-ct) - ux*st
+ self.c.x = uz*ux*(1-ct) - uy*st
+ self.c.y = uz*uy*(1-ct) + ux*st
+ self.c.z = ct + (1-ct) * uz**2
+
+
+ def from_two_vectors(self, vec1, vec2):
+ '''get a rotation matrix from two vectors.
+ This returns a rotation matrix which when applied to vec1
+ will produce a vector pointing in the same direction as vec2'''
+ angle = vec1.angle(vec2)
+ cross = vec1 % vec2
+ if cross.length() == 0:
+ # the two vectors are colinear
+ return self.from_euler(0,0,angle)
+ cross.normalize()
+ return self.from_axis_angle(cross, angle)
+
+ def close(self, m, tol=1e-7):
+ return self.a.close(m.a) and self.b.close(m.b) and self.c.close(m.c)
+
+class Plane:
+ '''a plane in 3 space, defined by a point and a vector normal'''
+ def __init__(self, point=None, normal=None):
+ if point is None:
+ point = Vector3(0,0,0)
+ if normal is None:
+ normal = Vector3(0, 0, 1)
+ self.point = point
+ self.normal = normal
+
+class Line:
+ '''a line in 3 space, defined by a point and a vector'''
+ def __init__(self, point=None, vector=None):
+ if point is None:
+ point = Vector3(0,0,0)
+ if vector is None:
+ vector = Vector3(0, 0, 1)
+ self.point = point
+ self.vector = vector
+
+ def plane_intersection(self, plane, forward_only=False):
+ '''return point where line intersects with a plane'''
+ l_dot_n = self.vector * plane.normal
+ if l_dot_n == 0.0:
+ # line is parallel to the plane
+ return None
+ d = ((plane.point - self.point) * plane.normal) / l_dot_n
+ if forward_only and d < 0:
+ return None
+ return (self.vector * d) + self.point
+
+
+
+def test_euler():
+ '''check that from_euler() and to_euler() are consistent'''
+ m = Matrix3()
+ from math import radians, degrees
+ for r in range(-179, 179, 3):
+ for p in range(-89, 89, 3):
+ for y in range(-179, 179, 3):
+ m.from_euler(radians(r), radians(p), radians(y))
+ (r2, p2, y2) = m.to_euler()
+ v1 = Vector3(r,p,y)
+ v2 = Vector3(degrees(r2),degrees(p2),degrees(y2))
+ diff = v1 - v2
+ if diff.length() > 1.0e-12:
+ print('EULER ERROR:', v1, v2, diff.length())
+
+
+def test_two_vectors():
+ '''test the from_two_vectors() method'''
+ import random
+ for i in range(1000):
+ v1 = Vector3(1, 0.2, -3)
+ v2 = Vector3(random.uniform(-5,5), random.uniform(-5,5), random.uniform(-5,5))
+ m = Matrix3()
+ m.from_two_vectors(v1, v2)
+ v3 = m * v1
+ diff = v3.normalized() - v2.normalized()
+ (r, p, y) = m.to_euler()
+ if diff.length() > 0.001:
+ print('err=%f' % diff.length())
+ print("r/p/y = %.1f %.1f %.1f" % (
+ degrees(r), degrees(p), degrees(y)))
+ print(v1.normalized(), v2.normalized(), v3.normalized())
+
+def test_plane():
+ '''testing line/plane intersection'''
+ print("testing plane/line maths")
+ plane = Plane(Vector3(0,0,0), Vector3(0,0,1))
+ line = Line(Vector3(0,0,100), Vector3(10, 10, -90))
+ p = line.plane_intersection(plane)
+ print(p)
+
+if __name__ == "__main__":
+ import doctest
+ doctest.testmod()
+ test_euler()
+ test_two_vectors()
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.cfg b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.cfg
new file mode 100644
index 000000000..861a9f554
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.py
new file mode 100644
index 000000000..d0839bd6d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/setup.py
@@ -0,0 +1,133 @@
+# Work around mbcs bug in distutils.
+# http://bugs.python.org/issue10945
+import codecs
+try:
+ codecs.lookup('mbcs')
+except LookupError:
+ ascii = codecs.lookup('ascii')
+ func = lambda name, enc=ascii: {True: enc}.get(name=='mbcs')
+ codecs.register(func)
+
+from setuptools import setup, Extension
+import glob, os, shutil, fnmatch, platform, sys
+
+version = '2.0.8'
+
+from generator import mavgen, mavparse
+
+# path to message_definitions directory
+if os.getenv("MDEF",None) is not None:
+ mdef_paths = [os.getenv("MDEF")]
+else:
+ mdef_paths = [os.path.join('..', 'message_definitions'),
+ os.path.join('mavlink', 'message_definitions'),
+ os.path.join('..', 'mavlink', 'message_definitions'),
+ os.path.join('message_definitions'),
+ ]
+
+for path in mdef_paths:
+ mdef_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), path)
+ if os.path.exists(mdef_path):
+ print("Using message definitions from %s" % mdef_path)
+ break
+
+dialects_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'dialects')
+
+v10_dialects = glob.glob(os.path.join(mdef_path, 'v1.0', '*.xml'))
+
+# for now v2.0 uses same XML files as v1.0
+v20_dialects = glob.glob(os.path.join(mdef_path, 'v1.0', '*.xml'))
+
+if len(v10_dialects) == 0:
+ print("No XML message definitions found")
+ sys.exit(1)
+
+if not "NOGEN" in os.environ:
+ for xml in v10_dialects:
+ shutil.copy(xml, os.path.join(dialects_path, 'v10'))
+ for xml in v20_dialects:
+ shutil.copy(xml, os.path.join(dialects_path, 'v20'))
+
+ for xml in v10_dialects:
+ dialect = os.path.basename(xml)[:-4]
+ wildcard = os.getenv("MAVLINK_DIALECT",'*')
+ if not fnmatch.fnmatch(dialect, wildcard):
+ continue
+ print("Building %s for protocol 1.0" % xml)
+ if not mavgen.mavgen_python_dialect(dialect, mavparse.PROTOCOL_1_0):
+ print("Building failed %s for protocol 1.0" % xml)
+ sys.exit(1)
+
+ for xml in v20_dialects:
+ dialect = os.path.basename(xml)[:-4]
+ wildcard = os.getenv("MAVLINK_DIALECT",'*')
+ if not fnmatch.fnmatch(dialect, wildcard):
+ continue
+ print("Building %s for protocol 2.0" % xml)
+ if not mavgen.mavgen_python_dialect(dialect, mavparse.PROTOCOL_2_0):
+ print("Building failed %s for protocol 2.0" % xml)
+ sys.exit(1)
+
+extensions = [] # Assume we might be unable to build native code
+if platform.system() != 'Windows':
+ extensions = [ Extension('mavnative',
+ sources = ['mavnative/mavnative.c'],
+ include_dirs = [
+ 'generator/C/include_v1.0',
+ 'generator/C/include_v2.0',
+ 'mavnative'
+ ]
+ ) ]
+else:
+ print("Skipping mavnative due to Windows possibly missing a compiler...")
+
+setup (name = 'pymavlink',
+ version = version,
+ description = 'Python MAVLink code',
+ long_description = '''A Python library for handling MAVLink protocol streams and log files. This allows for the creation of simple scripts to analyse telemetry logs from autopilots such as ArduPilot which use the MAVLink protocol. See the scripts that come with the package for examples of small, useful scripts that use pymavlink. For more information about the MAVLink protocol see http://qgroundcontrol.org/mavlink/''',
+ url = 'http://github.com/mavlink/mavlink',
+ classifiers=['Development Status :: 4 - Beta',
+ 'Environment :: Console',
+ 'Intended Audience :: Science/Research',
+ 'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python :: 2.7',
+ 'Topic :: Scientific/Engineering'
+ ],
+ license='LGPLv3',
+ package_dir = { 'pymavlink' : '.' },
+ package_data = { 'pymavlink.dialects.v10' : ['*.xml'],
+ 'pymavlink.dialects.v20' : ['*.xml'],
+ 'pymavlink.generator' : [ '*.xsd',
+ 'java/lib/*.*',
+ 'java/lib/Messages/*.*',
+ 'C/include_v1.0/*.h',
+ 'C/include_v1.0/*.hpp',
+ 'C/include_v2.0/*.h',
+ 'C/include_v2.0/*.hpp' ],
+ 'pymavlink' : ['mavnative/*.h'],
+ 'pymavlink' : ['message_definitions/v*/*.xml'] },
+ packages = ['pymavlink',
+ 'pymavlink.generator',
+ 'pymavlink.dialects',
+ 'pymavlink.dialects.v10',
+ 'pymavlink.dialects.v20'],
+ scripts = [ 'tools/magfit_delta.py', 'tools/mavextract.py',
+ 'tools/mavgraph.py', 'tools/mavparmdiff.py',
+ 'tools/mavtogpx.py', 'tools/magfit_gps.py',
+ 'tools/mavflightmodes.py', 'tools/mavlogdump.py',
+ 'tools/mavparms.py', 'tools/magfit_motors.py',
+ 'tools/mavflighttime.py', 'tools/mavloss.py',
+ 'tools/mavplayback.py', 'tools/magfit.py',
+ 'tools/mavgpslock.py',
+ 'tools/mavmission.py',
+ 'tools/mavsigloss.py',
+ 'tools/mavsearch.py',
+ 'tools/mavtomfile.py',
+ 'tools/mavgen.py',
+ 'tools/mavkml.py',
+ 'tools/mavfft.py',
+ 'tools/mavsummarize.py',
+ 'tools/MPU6KSearch.py'],
+ ext_modules = extensions
+ )
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/MPU6KSearch.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/MPU6KSearch.py
new file mode 100755
index 000000000..75b6440d8
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/MPU6KSearch.py
@@ -0,0 +1,199 @@
+#!/usr/bin/env python
+
+'''
+search a set of log files for signs of inconsistent IMU data
+'''
+
+import sys, time, os, glob
+import zipfile
+
+from pymavlink import mavutil
+from math import degrees
+
+# extra imports for pyinstaller
+import json
+from pymavlink.dialects.v10 import ardupilotmega
+
+search_dirs = ['c:\Program Files\APM Planner',
+ 'c:\Program Files\Mission Planner',
+ 'c:\Program Files (x86)\APM Planner',
+ 'c:\Program Files (x86)\Mission Planner']
+results = 'SearchResults.zip'
+email = 'Craig Elder '
+
+def IMUCheckFail(filename):
+ try:
+ mlog = mavutil.mavlink_connection(filename)
+ except Exception:
+ return False
+
+ accel1 = None
+ accel2 = None
+ gyro1 = None
+ gyro2 = None
+ t1 = 0
+ t2 = 0
+ ecount_accel = [0]*3
+ ecount_gyro = [0]*3
+ athreshold = 3.0
+ gthreshold = 30.0
+ count_threshold = 100
+ imu1_count = 0
+ imu2_count = 0
+
+ while True:
+ try:
+ m = mlog.recv_match(type=['RAW_IMU','SCALED_IMU2','IMU','IMU2','PARM','PARAM_VALUE'])
+ except Exception as e:
+ print('Error: %s' % e)
+ break
+ if m is None:
+ break
+ mtype = m.get_type()
+ gotimu2 = False
+ if mtype == 'RAW_IMU':
+ accel1 = [m.xacc*9.81*0.001, m.yacc*9.81*0.001, m.zacc*9.81*0.001]
+ gyro1 = [degrees(m.xgyro*0.001), degrees(m.ygyro*0.001), degrees(m.zgyro*0.001)]
+ t1 = m.time_usec/1000
+ imu1_count += 1
+ elif mtype == 'SCALED_IMU2':
+ accel2 = [m.xacc*9.81*0.001, m.yacc*9.81*0.001, m.zacc*9.81*0.001]
+ gyro2 = [degrees(m.xgyro*0.001), degrees(m.ygyro*0.001), degrees(m.zgyro*0.001)]
+ gotimu2 = True
+ t2 = m.time_boot_ms
+ imu2_count += 1
+ elif mtype == 'IMU':
+ accel1 = [m.AccX, m.AccY, m.AccZ]
+ gyro1 = [m.GyrX, m.GyrY, m.GyrZ]
+ t1 = m.TimeMS
+ imu1_count += 1
+ elif mtype == 'IMU2':
+ accel2 = [m.AccX, m.AccY, m.AccZ]
+ gyro2 = [m.GyrX, m.GyrY, m.GyrZ]
+ gotimu2 = True
+ t2 = m.TimeMS
+ imu2_count += 1
+ elif mtype == 'PARM':
+ if m.Name.startswith('INS_ACCOFFS_') or m.Name.startswith('INS_ACC2OFFS_'):
+ if m.Value == 0.0:
+ print('UNCALIBRATED: %s' % m)
+ return False
+ elif mtype == 'PARAM_VALUE':
+ if m.param_id.startswith('INS_ACCOFFS_') or m.param_id.startswith('INS_ACC2OFFS_'):
+ if m.param_value == 0.0:
+ print('UNCALIBRATED: %s' % m)
+ return False
+
+ # skip out early if we don't have two IMUs
+ if imu1_count > imu2_count + 100:
+ return False
+
+ if accel1 is not None and accel2 is not None and gotimu2 and t2 >= t1:
+ for i in range(3):
+ adiff = accel1[i] - accel2[i]
+ if adiff > athreshold:
+ if ecount_accel[i] < 0:
+ ecount_accel[i] = 0
+ else:
+ ecount_accel[i] += 1
+ elif adiff < -athreshold:
+ if ecount_accel[i] > 0:
+ ecount_accel[i] = 0
+ else:
+ ecount_accel[i] -= 1
+ else:
+ ecount_accel[i] = 0
+ gdiff = gyro1[i] - gyro2[i]
+ if gdiff > gthreshold:
+ if ecount_gyro[i] < 0:
+ ecount_gyro[i] = 0
+ else:
+ ecount_gyro[i] += 1
+ elif gdiff < -gthreshold:
+ if ecount_gyro[i] > 0:
+ ecount_gyro[i] = 0
+ else:
+ ecount_gyro[i] -= 1
+ else:
+ ecount_gyro[i] = 0
+ if abs(ecount_accel[i]) > count_threshold:
+ print("acceldiff[%u] %.1f" % (i, adiff))
+ print(m)
+ return True
+ if abs(ecount_gyro[i]) > count_threshold:
+ print("gyrodiff[i] %.1f" % (i, adiff))
+ print(m)
+ return True
+
+ return False
+
+found = []
+directories = sys.argv[1:]
+if not directories:
+ directories = search_dirs
+
+filelist = []
+
+extensions = ['.tlog','.bin']
+
+def match_extension(f):
+ '''see if the path matches a extension'''
+ (root,ext) = os.path.splitext(f)
+ return ext.lower() in extensions
+
+for d in directories:
+ if not os.path.exists(d):
+ continue
+ if os.path.isdir(d):
+ print("Searching in %s" % d)
+ for (root, dirs, files) in os.walk(d):
+ for f in files:
+ if not match_extension(f):
+ continue
+ path = os.path.join(root, f)
+ filelist.append(path)
+ elif match_extension(d):
+ filelist.append(d)
+
+for i in range(len(filelist)):
+ f = filelist[i]
+ print("Checking %s ... [found=%u i=%u/%u]" % (f, len(found), i, len(filelist)))
+ try:
+ if IMUCheckFail(f):
+ found.append(f)
+ except Exception as e:
+ print("Failed - %s" % e)
+ continue
+ sys.stdout.flush()
+
+if len(found) == 0:
+ print("No matching files found - all OK!")
+ raw_input('Press enter to close')
+ sys.exit(0)
+
+print("Creating zip file %s" % results)
+try:
+ zip = zipfile.ZipFile(results, 'w')
+except Exception:
+ print("Unable to create zip file %s" % results)
+ print("Please send matching files manually")
+ for f in found:
+ print('MATCHED: %s' % f)
+ raw_input('Press enter to close')
+ sys.exit(1)
+
+for f in found:
+ arcname=os.path.basename(f)
+ if not arcname.startswith('201'):
+ mtime = os.path.getmtime(f)
+ arcname = "%s-%s" % (time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(mtime)), arcname)
+ zip.write(f, arcname=arcname)
+zip.close()
+
+print('==============================================')
+print("Created %s with %u of %u matching logs" % (results, len(found), len(filelist)))
+print("Please send this file to %s" % email)
+print('==============================================')
+
+raw_input('Press enter to close')
+sys.exit(0)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit.py
new file mode 100755
index 000000000..82a17a34d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+
+'''
+fit best estimate of magnetometer offsets
+'''
+
+import sys, time, os, math
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--noise", type=float, default=0, help="noise to add")
+parser.add_argument("--mag2", action='store_true', help="use 2nd mag from DF log")
+parser.add_argument("--radius", default=None, type=float, help="target radius")
+parser.add_argument("--plot", action='store_true', help="plot points in 3D")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+from pymavlink.rotmat import Vector3
+
+
+def noise():
+ '''a noise vector'''
+ from random import gauss
+ v = Vector3(gauss(0, 1), gauss(0, 1), gauss(0, 1))
+ v.normalize()
+ return v * args.noise
+
+def select_data(data):
+ ret = []
+ counts = {}
+ for d in data:
+ mag = d
+ key = "%u:%u:%u" % (mag.x/20,mag.y/20,mag.z/20)
+ if key in counts:
+ counts[key] += 1
+ else:
+ counts[key] = 1
+ if counts[key] < 3:
+ ret.append(d)
+ print(len(data), len(ret))
+ return ret
+
+def radius(mag, offsets):
+ '''return radius give data point and offsets'''
+ return (mag + offsets).length()
+
+def radius_cmp(a, b, offsets):
+ '''return +1 or -1 for for sorting'''
+ diff = radius(a, offsets) - radius(b, offsets)
+ if diff > 0:
+ return 1
+ if diff < 0:
+ return -1
+ return 0
+
+def sphere_error(p, data):
+ from scipy import sqrt
+ x,y,z,r = p
+ if args.radius is not None:
+ r = args.radius
+ ofs = Vector3(x,y,z)
+ ret = []
+ for d in data:
+ mag = d
+ err = r - radius(mag, ofs)
+ ret.append(err)
+ return ret
+
+def fit_data(data):
+ import numpy, scipy
+ from scipy import optimize
+
+ p0 = [0.0, 0.0, 0.0, 0.0]
+ p1, ier = optimize.leastsq(sphere_error, p0[:], args=(data))
+ if not ier in [1, 2, 3, 4]:
+ raise RuntimeError("Unable to find solution")
+ if args.radius is not None:
+ r = args.radius
+ else:
+ r = p1[3]
+ return (Vector3(p1[0], p1[1], p1[2]), r)
+
+def magfit(logfile):
+ '''find best magnetometer offset fit to a log file'''
+
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps)
+
+ data = []
+
+ last_t = 0
+ offsets = Vector3(0,0,0)
+
+ # now gather all the data
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+ if m.get_type() == "SENSOR_OFFSETS":
+ # update current offsets
+ offsets = Vector3(m.mag_ofs_x, m.mag_ofs_y, m.mag_ofs_z)
+ if m.get_type() == "RAW_IMU":
+ mag = Vector3(m.xmag, m.ymag, m.zmag)
+ # add data point after subtracting the current offsets
+ data.append(mag - offsets + noise())
+ if m.get_type() == "MAG" and not args.mag2:
+ offsets = Vector3(m.OfsX,m.OfsY,m.OfsZ)
+ mag = Vector3(m.MagX,m.MagY,m.MagZ)
+ data.append(mag - offsets + noise())
+ if m.get_type() == "MAG2" and args.mag2:
+ offsets = Vector3(m.OfsX,m.OfsY,m.OfsZ)
+ mag = Vector3(m.MagX,m.MagY,m.MagZ)
+ data.append(mag - offsets + noise())
+
+ print("Extracted %u data points" % len(data))
+ print("Current offsets: %s" % offsets)
+
+ orig_data = data
+
+ data = select_data(data)
+
+ # remove initial outliers
+ data.sort(lambda a,b : radius_cmp(a,b,offsets))
+ data = data[len(data)/16:-len(data)/16]
+
+ # do an initial fit
+ (offsets, field_strength) = fit_data(data)
+
+ for count in range(3):
+ # sort the data by the radius
+ data.sort(lambda a,b : radius_cmp(a,b,offsets))
+
+ print("Fit %u : %s field_strength=%6.1f to %6.1f" % (
+ count, offsets,
+ radius(data[0], offsets), radius(data[-1], offsets)))
+
+ # discard outliers, keep the middle 3/4
+ data = data[len(data)/8:-len(data)/8]
+
+ # fit again
+ (offsets, field_strength) = fit_data(data)
+
+ print("Final : %s field_strength=%6.1f to %6.1f" % (
+ offsets,
+ radius(data[0], offsets), radius(data[-1], offsets)))
+
+ if args.plot:
+ plot_data(orig_data, data)
+
+def plot_data(orig_data, data):
+ '''plot data in 3D'''
+ import numpy as np
+ from mpl_toolkits.mplot3d import Axes3D
+ import matplotlib.pyplot as plt
+
+ for dd, c in [(orig_data, 'r'), (data, 'b')]:
+ fig = plt.figure()
+ ax = fig.add_subplot(111, projection='3d')
+
+ xs = [ d.x for d in dd ]
+ ys = [ d.y for d in dd ]
+ zs = [ d.z for d in dd ]
+ ax.scatter(xs, ys, zs, c=c, marker='o')
+
+ ax.set_xlabel('X Label')
+ ax.set_ylabel('Y Label')
+ ax.set_zlabel('Z Label')
+ plt.show()
+
+total = 0.0
+for filename in args.logs:
+ magfit(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_delta.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_delta.py
new file mode 100755
index 000000000..fbba292f0
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_delta.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python
+
+'''
+fit best estimate of magnetometer offsets using the algorithm from
+Bill Premerlani
+'''
+
+import sys, time, os, math
+
+# command line option handling
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--verbose", action='store_true', default=False, help="verbose offset output")
+parser.add_argument("--gain", type=float, default=0.01, help="algorithm gain")
+parser.add_argument("--noise", type=float, default=0, help="noise to add")
+parser.add_argument("--max-change", type=float, default=10, help="max step change")
+parser.add_argument("--min-diff", type=float, default=50, help="min mag vector delta")
+parser.add_argument("--history", type=int, default=20, help="how many points to keep")
+parser.add_argument("--repeat", type=int, default=1, help="number of repeats through the data")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+from pymavlink.rotmat import Vector3, Matrix3
+
+
+def noise():
+ '''a noise vector'''
+ from random import gauss
+ v = Vector3(gauss(0, 1), gauss(0, 1), gauss(0, 1))
+ v.normalize()
+ return v * args.noise
+
+def find_offsets(data, ofs):
+ '''find mag offsets by applying Bills "offsets revisited" algorithm
+ on the data
+
+ This is an implementation of the algorithm from:
+ http://gentlenav.googlecode.com/files/MagnetometerOffsetNullingRevisited.pdf
+ '''
+
+ # a limit on the maximum change in each step
+ max_change = args.max_change
+
+ # the gain factor for the algorithm
+ gain = args.gain
+
+ data2 = []
+ for d in data:
+ d = d.copy() + noise()
+ d.x = float(int(d.x + 0.5))
+ d.y = float(int(d.y + 0.5))
+ d.z = float(int(d.z + 0.5))
+ data2.append(d)
+ data = data2
+
+ history_idx = 0
+ mag_history = data[0:args.history]
+
+ for i in range(args.history, len(data)):
+ B1 = mag_history[history_idx] + ofs
+ B2 = data[i] + ofs
+
+ diff = B2 - B1
+ diff_length = diff.length()
+ if diff_length <= args.min_diff:
+ # the mag vector hasn't changed enough - we don't get any
+ # information from this
+ history_idx = (history_idx+1) % args.history
+ continue
+
+ mag_history[history_idx] = data[i]
+ history_idx = (history_idx+1) % args.history
+
+ # equation 6 of Bills paper
+ delta = diff * (gain * (B2.length() - B1.length()) / diff_length)
+
+ # limit the change from any one reading. This is to prevent
+ # single crazy readings from throwing off the offsets for a long
+ # time
+ delta_length = delta.length()
+ if max_change != 0 and delta_length > max_change:
+ delta *= max_change / delta_length
+
+ # set the new offsets
+ ofs = ofs - delta
+
+ if args.verbose:
+ print(ofs)
+ return ofs
+
+
+def magfit(logfile):
+ '''find best magnetometer offset fit to a log file'''
+
+ print("Processing log %s" % filename)
+
+ # open the log file
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps)
+
+ data = []
+ mag = None
+ offsets = Vector3(0,0,0)
+
+ # now gather all the data
+ while True:
+ # get the next MAVLink message in the log
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+ if m.get_type() == "SENSOR_OFFSETS":
+ # update offsets that were used during this flight
+ offsets = Vector3(m.mag_ofs_x, m.mag_ofs_y, m.mag_ofs_z)
+ if m.get_type() == "RAW_IMU" and offsets != None:
+ # extract one mag vector, removing the offsets that were
+ # used during that flight to get the raw sensor values
+ mag = Vector3(m.xmag, m.ymag, m.zmag) - offsets
+ data.append(mag)
+
+ print("Extracted %u data points" % len(data))
+ print("Current offsets: %s" % offsets)
+
+ # run the fitting algorithm
+ ofs = offsets
+ ofs = Vector3(0,0,0)
+ for r in range(args.repeat):
+ ofs = find_offsets(data, ofs)
+ print('Loop %u offsets %s' % (r, ofs))
+ sys.stdout.flush()
+ print("New offsets: %s" % ofs)
+
+total = 0.0
+for filename in args.logs:
+ magfit(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_gps.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_gps.py
new file mode 100755
index 000000000..4cb95b14a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_gps.py
@@ -0,0 +1,165 @@
+#!/usr/bin/env python
+
+'''
+fit best estimate of magnetometer offsets
+'''
+
+import sys, time, os, math
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--minspeed", type=float, default=5.0, help="minimum ground speed to use")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--declination", type=float, default=None, help="force declination")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+class vec3(object):
+ def __init__(self, x, y, z):
+ self.x = x
+ self.y = y
+ self.z = z
+ def __str__(self):
+ return "%.1f %.1f %.1f" % (self.x, self.y, self.z)
+
+def heading_error1(parm, data):
+ from math import sin, cos, atan2, degrees
+ from numpy import dot
+ xofs,yofs,zofs,a1,a2,a3,a4,a5,a6,a7,a8,a9,declination = parm
+
+ if args.declination is not None:
+ declination = args.declination
+
+ ret = []
+ for d in data:
+ x = d[0] + xofs
+ y = d[1] + yofs
+ z = d[2] + zofs
+ r = d[3]
+ p = d[4]
+ h = d[5]
+
+ headX = x*cos(p) + y*sin(r)*sin(p) + z*cos(r)*sin(p)
+ headY = y*cos(r) - z*sin(r)
+ heading = degrees(atan2(-headY,headX)) + declination
+ if heading < 0:
+ heading += 360
+ herror = h - heading
+ if herror > 180:
+ herror -= 360
+ if herror < -180:
+ herror += 360
+ ret.append(herror)
+ return ret
+
+def heading_error(parm, data):
+ from math import sin, cos, atan2, degrees
+ from numpy import dot
+ xofs,yofs,zofs,a1,a2,a3,a4,a5,a6,a7,a8,a9,declination = parm
+
+ if args.declination is not None:
+ declination = args.declination
+
+ a = [[1.0,a2,a3],[a4,a5,a6],[a7,a8,a9]]
+
+ ret = []
+ for d in data:
+ x = d[0] + xofs
+ y = d[1] + yofs
+ z = d[2] + zofs
+ r = d[3]
+ p = d[4]
+ h = d[5]
+ mv = [x, y, z]
+ mv2 = dot(a, mv)
+ x = mv2[0]
+ y = mv2[1]
+ z = mv2[2]
+
+ headX = x*cos(p) + y*sin(r)*sin(p) + z*cos(r)*sin(p)
+ headY = y*cos(r) - z*sin(r)
+ heading = degrees(atan2(-headY,headX)) + declination
+ if heading < 0:
+ heading += 360
+ herror = h - heading
+ if herror > 180:
+ herror -= 360
+ if herror < -180:
+ herror += 360
+ ret.append(herror)
+ return ret
+
+def fit_data(data):
+ import numpy, scipy
+ from scipy import optimize
+
+ p0 = [0.0, 0.0, 0.0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0]
+ if args.declination is not None:
+ p0[-1] = args.declination
+ p1, ier = optimize.leastsq(heading_error1, p0[:], args=(data))
+
+# p0 = p1[:]
+# p1, ier = optimize.leastsq(heading_error, p0[:], args=(data))
+
+ print(p1)
+ if not ier in [1, 2, 3, 4]:
+ raise RuntimeError("Unable to find solution")
+ return p1
+
+def magfit(logfile):
+ '''find best magnetometer offset fit to a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps)
+
+ flying = False
+ gps_heading = 0.0
+
+ data = []
+
+ # get the current mag offsets
+ m = mlog.recv_match(type='SENSOR_OFFSETS',condition=args.condition)
+ offsets = vec3(m.mag_ofs_x, m.mag_ofs_y, m.mag_ofs_z)
+
+ attitude = mlog.recv_match(type='ATTITUDE',condition=args.condition)
+
+ # now gather all the data
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+ if m.get_type() == "GPS_RAW":
+ # flying if groundspeed more than 5 m/s
+ flying = (m.v > args.minspeed and m.fix_type == 2)
+ gps_heading = m.hdg
+ if m.get_type() == "GPS_RAW_INT":
+ # flying if groundspeed more than 5 m/s
+ flying = (m.vel/100 > args.minspeed and m.fix_type == 3)
+ gps_heading = m.cog/100
+ if m.get_type() == "ATTITUDE":
+ attitude = m
+ if m.get_type() == "SENSOR_OFFSETS":
+ # update current offsets
+ offsets = vec3(m.mag_ofs_x, m.mag_ofs_y, m.mag_ofs_z)
+ if not flying:
+ continue
+ if m.get_type() == "RAW_IMU":
+ data.append((m.xmag - offsets.x, m.ymag - offsets.y, m.zmag - offsets.z, attitude.roll, attitude.pitch, gps_heading))
+ print("Extracted %u data points" % len(data))
+ print("Current offsets: %s" % offsets)
+ ofs2 = fit_data(data)
+ print("Declination estimate: %.1f" % ofs2[-1])
+ new_offsets = vec3(ofs2[0], ofs2[1], ofs2[2])
+ a = [[ofs2[3], ofs2[4], ofs2[5]],
+ [ofs2[6], ofs2[7], ofs2[8]],
+ [ofs2[9], ofs2[10], ofs2[11]]]
+ print(a)
+ print("New offsets : %s" % new_offsets)
+
+total = 0.0
+for filename in args.logs:
+ magfit(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_motors.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_motors.py
new file mode 100755
index 000000000..738c0384d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/magfit_motors.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+'''
+fit best estimate of magnetometer offsets, trying to take into account motor interference
+'''
+
+import sys, time, os, math
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps",dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--condition",dest="condition", default=None, help="select packets by condition")
+parser.add_argument("--noise", type=float, default=0, help="noise to add")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+from pymavlink.rotmat import Vector3
+
+
+def noise():
+ '''a noise vector'''
+ from random import gauss
+ v = Vector3(gauss(0, 1), gauss(0, 1), gauss(0, 1))
+ v.normalize()
+ return v * args.noise
+
+def select_data(data):
+ ret = []
+ counts = {}
+ for d in data:
+ (mag,motor) = d
+ key = "%u:%u:%u" % (mag.x/20,mag.y/20,mag.z/20)
+ if key in counts:
+ counts[key] += 1
+ else:
+ counts[key] = 1
+ if counts[key] < 3:
+ ret.append(d)
+ print(len(data), len(ret))
+ return ret
+
+def radius(d, offsets, motor_ofs):
+ '''return radius give data point and offsets'''
+ (mag, motor) = d
+ return (mag + offsets + motor*motor_ofs).length()
+
+def radius_cmp(a, b, offsets, motor_ofs):
+ '''return radius give data point and offsets'''
+ diff = radius(a, offsets, motor_ofs) - radius(b, offsets, motor_ofs)
+ if diff > 0:
+ return 1
+ if diff < 0:
+ return -1
+ return 0
+
+def sphere_error(p, data):
+ from scipy import sqrt
+ x,y,z,mx,my,mz,r = p
+ ofs = Vector3(x,y,z)
+ motor_ofs = Vector3(mx,my,mz)
+ ret = []
+ for d in data:
+ (mag,motor) = d
+ err = r - radius((mag,motor), ofs, motor_ofs)
+ ret.append(err)
+ return ret
+
+def fit_data(data):
+ import numpy, scipy
+ from scipy import optimize
+
+ p0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+ p1, ier = optimize.leastsq(sphere_error, p0[:], args=(data))
+ if not ier in [1, 2, 3, 4]:
+ raise RuntimeError("Unable to find solution")
+ return (Vector3(p1[0], p1[1], p1[2]), Vector3(p1[3], p1[4], p1[5]), p1[6])
+
+def magfit(logfile):
+ '''find best magnetometer offset fit to a log file'''
+
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps)
+
+ data = []
+
+ last_t = 0
+ offsets = Vector3(0,0,0)
+ motor_ofs = Vector3(0,0,0)
+ motor = 0.0
+
+ # now gather all the data
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+ if m.get_type() == "PARAM_VALUE" and m.param_id == "RC3_MIN":
+ rc3_min = float(m.param_value)
+ if m.get_type() == "SENSOR_OFFSETS":
+ # update current offsets
+ offsets = Vector3(m.mag_ofs_x, m.mag_ofs_y, m.mag_ofs_z)
+ if m.get_type() == "SERVO_OUTPUT_RAW":
+ motor_pwm = m.servo1_raw + m.servo2_raw + m.servo3_raw + m.servo4_raw
+ motor_pwm *= 0.25
+ rc3_min = mlog.param('RC3_MIN', 1100)
+ rc3_max = mlog.param('RC3_MAX', 1900)
+ motor = (motor_pwm - rc3_min) / (rc3_max - rc3_min)
+ if motor > 1.0:
+ motor = 1.0
+ if motor < 0.0:
+ motor = 0.0
+ if m.get_type() == "RAW_IMU":
+ mag = Vector3(m.xmag, m.ymag, m.zmag)
+ # add data point after subtracting the current offsets
+ data.append((mag - offsets + noise(), motor))
+
+ print("Extracted %u data points" % len(data))
+ print("Current offsets: %s" % offsets)
+
+ data = select_data(data)
+
+ # do an initial fit with all data
+ (offsets, motor_ofs, field_strength) = fit_data(data)
+
+ for count in range(3):
+ # sort the data by the radius
+ data.sort(lambda a,b : radius_cmp(a,b,offsets,motor_ofs))
+
+ print("Fit %u : %s %s field_strength=%6.1f to %6.1f" % (
+ count, offsets, motor_ofs,
+ radius(data[0], offsets, motor_ofs), radius(data[-1], offsets, motor_ofs)))
+
+ # discard outliers, keep the middle 3/4
+ data = data[len(data)/8:-len(data)/8]
+
+ # fit again
+ (offsets, motor_ofs, field_strength) = fit_data(data)
+
+ print("Final : %s %s field_strength=%6.1f to %6.1f" % (
+ offsets, motor_ofs,
+ radius(data[0], offsets, motor_ofs), radius(data[-1], offsets, motor_ofs)))
+ print("mavgraph.py '%s' 'mag_field(RAW_IMU)' 'mag_field_motors(RAW_IMU,SENSOR_OFFSETS,(%f,%f,%f),SERVO_OUTPUT_RAW,(%f,%f,%f))'" % (
+ filename,
+ offsets.x,offsets.y,offsets.z,
+ motor_ofs.x, motor_ofs.y, motor_ofs.z))
+
+total = 0.0
+for filename in args.logs:
+ magfit(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavextract.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavextract.py
new file mode 100755
index 000000000..bc33871be
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavextract.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+
+'''
+extract one mode type from a log
+'''
+
+import sys, time, os, struct
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--robust", action='store_true', help="Enable robust parsing (skip over bad data)")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--mode", default='auto', help="mode to extract")
+parser.add_argument("--link", default=None, type=int, help="only extract specific comms link")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+def older_message(m, lastm):
+ '''return true if m is older than lastm by timestamp'''
+ atts = {'time_boot_ms' : 1.0e-3,
+ 'time_unix_usec' : 1.0e-6,
+ 'time_usec' : 1.0e-6}
+ for a in atts.keys():
+ if hasattr(m, a):
+ mul = atts[a]
+ t1 = m.getattr(a) * mul
+ t2 = lastm.getattr(a) * mul
+ if t2 >= t1 and t2 - t1 < 60:
+ return True
+ return False
+
+def process(filename):
+ '''process one logfile'''
+ print("Processing %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps,
+ robust_parsing=args.robust)
+
+
+ ext = os.path.splitext(filename)[1]
+ isbin = ext in ['.bin', '.BIN']
+ islog = ext in ['.log', '.LOG']
+ output = None
+ count = 1
+ dirname = os.path.dirname(filename)
+
+ if isbin or islog:
+ extension = "bin"
+ else:
+ extension = "tlog"
+
+ file_header = ''
+
+ messages = []
+
+ # we allow a list of modes that map to one mode number. This allows for --mode=AUTO,RTL and consider the RTL as part of AUTO
+ modes = args.mode.upper().split(',')
+ flightmode = None
+
+ while True:
+ m = mlog.recv_match()
+ if m is None:
+ break
+ if args.link is not None and m._link != args.link:
+ continue
+
+ mtype = m.get_type()
+ if mtype in messages:
+ if older_message(m, messages[mtype]):
+ continue
+
+ # we don't use mlog.flightmode as that can be wrong if we are extracting a single link
+ if mtype == 'HEARTBEAT' and m.get_srcComponent() != mavutil.mavlink.MAV_COMP_ID_GIMBAL and m.type != mavutil.mavlink.MAV_TYPE_GCS:
+ flightmode = mavutil.mode_string_v10(m).upper()
+ if mtype == 'MODE':
+ flightmode = mlog.flightmode
+
+ if (isbin or islog) and m.get_type() in ["FMT", "PARM", "CMD"]:
+ file_header += m.get_msgbuf()
+ if (isbin or islog) and m.get_type() == 'MSG' and m.Message.startswith("Ardu"):
+ file_header += m.get_msgbuf()
+ if m.get_type() in ['PARAM_VALUE','MISSION_ITEM']:
+ timestamp = getattr(m, '_timestamp', None)
+ file_header += struct.pack('>Q', timestamp*1.0e6) + m.get_msgbuf()
+
+ if not mavutil.evaluate_condition(args.condition, mlog.messages):
+ continue
+
+ if flightmode in modes:
+ if output is None:
+ path = os.path.join(dirname, "%s%u.%s" % (modes[0], count, extension))
+ count += 1
+ print("Creating %s" % path)
+ output = open(path, mode='wb')
+ output.write(file_header)
+ else:
+ if output is not None:
+ output.close()
+ output = None
+
+ if output and m.get_type() != 'BAD_DATA':
+ timestamp = getattr(m, '_timestamp', None)
+ if not isbin:
+ output.write(struct.pack('>Q', timestamp*1.0e6))
+ output.write(m.get_msgbuf())
+
+for filename in args.logs:
+ process(filename)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavfft.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavfft.py
new file mode 100755
index 000000000..f166566bb
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavfft.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+'''
+fit best estimate of magnetometer offsets
+'''
+
+import sys, time, os, math, numpy
+import matplotlib.pyplot as plt
+import pylab
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--sample-length", type=int, default=0, help="number of samples to run FFT over")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+def fft(logfile):
+ '''display fft for raw ACC data in logfile'''
+
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename)
+
+ data = {'ACC1.rate' : 1000,
+ 'ACC2.rate' : 1600,
+ 'ACC3.rate' : 1000,
+ 'GYR1.rate' : 1000,
+ 'GYR2.rate' : 800,
+ 'GYR3.rate' : 1000}
+ for acc in ['ACC1','ACC2','ACC3']:
+ for ax in ['AccX', 'AccY', 'AccZ']:
+ data[acc+'.'+ax] = []
+ for gyr in ['GYR1','GYR2','GYR3']:
+ for ax in ['GyrX', 'GyrY', 'GyrZ']:
+ data[gyr+'.'+ax] = []
+
+ # now gather all the data
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+ type = m.get_type()
+ if type.startswith("ACC"):
+ data[type+'.AccX'].append(m.AccX)
+ data[type+'.AccY'].append(m.AccY)
+ data[type+'.AccZ'].append(m.AccZ)
+ if type.startswith("GYR"):
+ data[type+'.GyrX'].append(m.GyrX)
+ data[type+'.GyrY'].append(m.GyrY)
+ data[type+'.GyrZ'].append(m.GyrZ)
+
+ print("Extracted %u data points" % len(data['ACC1.AccX']))
+
+ for msg in ['ACC1', 'ACC2', 'ACC3', 'GYR1', 'GYR2', 'GYR3']:
+ pylab.figure()
+
+ if msg.startswith('ACC'):
+ prefix = 'Acc'
+ else:
+ prefix = 'Gyr'
+ for axis in ['X', 'Y', 'Z']:
+ field = msg + '.' + prefix + axis
+ d = data[field]
+ if args.sample_length != 0:
+ d = d[0:args.sample_length]
+ d = numpy.array(d)
+ if len(d) == 0:
+ continue
+ avg = numpy.sum(d) / len(d)
+ d -= avg
+ d_fft = numpy.fft.rfft(d)
+ freq = numpy.fft.rfftfreq(len(d), 1.0 / data[msg+'.rate'])
+ pylab.plot( freq, numpy.abs(d_fft), label=field )
+ pylab.legend(loc='upper right')
+
+for filename in args.logs:
+ fft(filename)
+
+pylab.show()
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflightmodes.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflightmodes.py
new file mode 100755
index 000000000..94736798f
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflightmodes.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+
+'''
+show changes in flight modes
+'''
+
+import sys, time, datetime, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+def flight_modes(logfile):
+ '''show flight modes for a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename)
+
+ mode = ""
+ previous_mode = ""
+ mode_start_timestamp = -1
+ time_in_mode = {}
+ previous_percent = -1
+ seconds_per_percent = -1
+
+ filesize = os.path.getsize(filename)
+
+ while True:
+ m = mlog.recv_match(type=['SYS_STATUS','HEARTBEAT','MODE'],
+ condition='MAV.flightmode!="%s"' % mlog.flightmode)
+ if m is None:
+ break
+ print('%s MAV.flightmode=%-12s (MAV.timestamp=%u %u%%)' % (
+ time.asctime(time.localtime(m._timestamp)),
+ mlog.flightmode,
+ m._timestamp, mlog.percent))
+
+ mode = mlog.flightmode
+ if (mode not in time_in_mode):
+ time_in_mode[mode] = 0
+
+ if (mode_start_timestamp == -1):
+ mode_start_timestamp = m._timestamp
+ elif (previous_mode != "" and previous_mode != mode):
+ time_in_mode[previous_mode] = time_in_mode[previous_mode] + (m._timestamp - mode_start_timestamp)
+
+ #figure out how many seconds per percentage point so I can
+ #caculate how many seconds for the final mode
+ if (seconds_per_percent == -1 and previous_percent != -1
+ and previous_percent != mlog.percent):
+ seconds_per_percent = (m._timestamp - mode_start_timestamp) / (mlog.percent - previous_percent)
+
+ mode_start_timestamp = m._timestamp
+
+ previous_mode = mode
+ previous_percent = mlog.percent
+
+ #put a whitespace line before the per-mode report
+ print()
+ print("Time per mode:")
+
+ #need to get the time in the final mode
+ if (seconds_per_percent != -1):
+ seconds_remaining = (100.0 - previous_percent) * seconds_per_percent
+
+ time_in_mode[previous_mode] = time_in_mode[previous_mode] + seconds_remaining
+
+ total_flight_time = 0
+ for key, value in time_in_mode.iteritems():
+ total_flight_time = total_flight_time + value
+
+ for key, value in time_in_mode.iteritems():
+ print('%-12s %s %.2f%%' % (key, str(datetime.timedelta(seconds=int(value))), (value / total_flight_time) * 100.0))
+ else:
+ #can't print time in mode if only one mode during flight
+ print(previous_mode, " 100% of flight time")
+
+for filename in args.logs:
+ flight_modes(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflighttime.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflighttime.py
new file mode 100755
index 000000000..6243b8732
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavflighttime.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+
+'''
+work out total flight time for a mavlink log
+'''
+
+import sys, time, os, glob
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--condition", default=None, help="condition for packets")
+parser.add_argument("--groundspeed", type=float, default=3.0, help="groundspeed threshold")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+from pymavlink.mavextra import distance_two
+
+
+def flight_time(logfile):
+ '''work out flight time for a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename)
+
+ in_air = False
+ start_time = 0.0
+ total_time = 0.0
+ total_dist = 0.0
+ t = None
+ last_msg = None
+ last_time_usec = None
+
+ while True:
+ m = mlog.recv_match(type=['GPS','GPS_RAW_INT'], condition=args.condition)
+ if m is None:
+ if in_air:
+ total_time += time.mktime(t) - start_time
+ if total_time > 0:
+ print("Flight time : %u:%02u" % (int(total_time)/60, int(total_time)%60))
+ return (total_time, total_dist)
+ if m.get_type() == 'GPS_RAW_INT':
+ groundspeed = m.vel*0.01
+ status = m.fix_type
+ time_usec = m.time_usec
+ else:
+ groundspeed = m.Spd
+ status = m.Status
+ time_usec = m.TimeUS
+ if status < 3:
+ continue
+ t = time.localtime(m._timestamp)
+ if groundspeed > args.groundspeed and not in_air:
+ print("In air at %s (percent %.0f%% groundspeed %.1f)" % (time.asctime(t), mlog.percent, groundspeed))
+ in_air = True
+ start_time = time.mktime(t)
+ elif groundspeed < args.groundspeed and in_air:
+ print("On ground at %s (percent %.1f%% groundspeed %.1f time=%.1f seconds)" % (
+ time.asctime(t), mlog.percent, groundspeed, time.mktime(t) - start_time))
+ in_air = False
+ total_time += time.mktime(t) - start_time
+
+ if last_msg is None or time_usec > last_time_usec or time_usec+30e6 < last_time_usec:
+ if last_msg is not None:
+ total_dist += distance_two(last_msg, m)
+ last_msg = m
+ last_time_usec = time_usec
+ return (total_time, total_dist)
+
+total_time = 0.0
+total_dist = 0.0
+for filename in args.logs:
+ for f in glob.glob(filename):
+ (ftime, fdist) = flight_time(f)
+ total_time += ftime
+ total_dist += fdist
+
+print("Total time in air: %u:%02u" % (int(total_time)/60, int(total_time)%60))
+print("Total distance travelled: %.1f meters" % total_dist)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgen.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgen.py
new file mode 100755
index 000000000..6962da6ba
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgen.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+'''
+parse a MAVLink protocol XML file and generate a python implementation
+
+Copyright Andrew Tridgell 2011
+Released under GNU GPL version 3 or later
+
+'''
+
+# allow running mavgen from within the tree without installing
+if __name__ == "__main__" and __package__ is None:
+ from os import sys, path
+ sys.path.insert(0, path.dirname(path.dirname(path.dirname(path.abspath(__file__)))))
+
+from pymavlink.generator import mavgen
+from pymavlink.generator import mavparse
+
+from argparse import ArgumentParser
+
+parser = ArgumentParser(description="This tool generate implementations from MAVLink message definitions")
+parser.add_argument("-o", "--output", default="mavlink", help="output directory.")
+parser.add_argument("--lang", dest="language", choices=mavgen.supportedLanguages, default=mavgen.DEFAULT_LANGUAGE, help="language of generated code [default: %(default)s]")
+parser.add_argument("--wire-protocol", choices=[mavparse.PROTOCOL_0_9, mavparse.PROTOCOL_1_0, mavparse.PROTOCOL_2_0], default=mavgen.DEFAULT_WIRE_PROTOCOL, help="MAVLink protocol version. [default: %(default)s]")
+parser.add_argument("--no-validate", action="store_false", dest="validate", default=mavgen.DEFAULT_VALIDATE, help="Do not perform XML validation. Can speed up code generation if XML files are known to be correct.")
+parser.add_argument("--error-limit", default=mavgen.DEFAULT_ERROR_LIMIT, help="maximum number of validation errors to display")
+parser.add_argument("definitions", metavar="XML", nargs="+", help="MAVLink definitions")
+args = parser.parse_args()
+
+mavgen.mavgen(args, args.definitions)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgpslock.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgpslock.py
new file mode 100755
index 000000000..c5fac1c3a
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgpslock.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+
+'''
+show GPS lock events in a MAVLink log
+'''
+
+import sys, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--condition", default=None, help="condition for packets")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+def lock_time(logfile):
+ '''work out gps lock times for a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename)
+
+ locked = False
+ start_time = 0.0
+ total_time = 0.0
+ t = None
+ m = mlog.recv_match(type=['GPS_RAW_INT','GPS_RAW'], condition=args.condition)
+ if m is None:
+ return 0
+
+ unlock_time = time.mktime(time.localtime(m._timestamp))
+
+ while True:
+ m = mlog.recv_match(type=['GPS_RAW_INT','GPS_RAW'], condition=args.condition)
+ if m is None:
+ if locked:
+ total_time += time.mktime(t) - start_time
+ if total_time > 0:
+ print("Lock time : %u:%02u" % (int(total_time)/60, int(total_time)%60))
+ return total_time
+ t = time.localtime(m._timestamp)
+ if m.fix_type >= 2 and not locked:
+ print("Locked at %s after %u seconds" % (time.asctime(t),
+ time.mktime(t) - unlock_time))
+ locked = True
+ start_time = time.mktime(t)
+ elif m.fix_type == 1 and locked:
+ print("Lost GPS lock at %s" % time.asctime(t))
+ locked = False
+ total_time += time.mktime(t) - start_time
+ unlock_time = time.mktime(t)
+ elif m.fix_type == 0 and locked:
+ print("Lost protocol lock at %s" % time.asctime(t))
+ locked = False
+ total_time += time.mktime(t) - start_time
+ unlock_time = time.mktime(t)
+ return total_time
+
+total = 0.0
+for filename in args.logs:
+ total += lock_time(filename)
+
+print("Total time locked: %u:%02u" % (int(total)/60, int(total)%60))
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgraph.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgraph.py
new file mode 100755
index 000000000..cb43cec41
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavgraph.py
@@ -0,0 +1,311 @@
+#!/usr/bin/env python
+'''
+graph a MAVLink log file
+Andrew Tridgell August 2011
+'''
+
+import sys, struct, time, os, datetime
+import math, re
+import matplotlib
+from math import *
+
+try:
+ from pymavlink.mavextra import *
+except:
+ print("WARNING: Numpy missing, mathematical notation will not be supported.")
+
+# cope with rename of raw_input in python3
+try:
+ input = raw_input
+except NameError:
+ pass
+
+colourmap = {
+ 'apm' : {
+ 'MANUAL' : (1.0, 0, 0),
+ 'AUTO' : ( 0, 1.0, 0),
+ 'LOITER' : ( 0, 0, 1.0),
+ 'FBWA' : (1.0, 0.5, 0),
+ 'RTL' : ( 1, 0, 0.5),
+ 'STABILIZE' : (0.5, 1.0, 0),
+ 'LAND' : ( 0, 1.0, 0.5),
+ 'STEERING' : (0.5, 0, 1.0),
+ 'HOLD' : ( 0, 0.5, 1.0),
+ 'ALT_HOLD' : (1.0, 0.5, 0.5),
+ 'CIRCLE' : (0.5, 1.0, 0.5),
+ 'POSITION' : (1.0, 0.0, 1.0),
+ 'GUIDED' : (0.5, 0.5, 1.0),
+ 'ACRO' : (1.0, 1.0, 0),
+ 'CRUISE' : ( 0, 1.0, 1.0)
+ },
+ 'px4' : {
+ 'MANUAL' : (1.0, 0, 0),
+ 'SEATBELT' : ( 0.5, 0.5, 0),
+ 'EASY' : ( 0, 1.0, 0),
+ 'AUTO' : ( 0, 0, 1.0),
+ 'UNKNOWN' : ( 1.0, 1.0, 1.0)
+ }
+ }
+
+edge_colour = (0.1, 0.1, 0.1)
+
+lowest_x = None
+highest_x = None
+
+def plotit(x, y, fields, colors=[]):
+ '''plot a set of graphs using date for x axis'''
+ global lowest_x, highest_x
+ pylab.ion()
+ fig = pylab.figure(num=1, figsize=(12,6))
+ ax1 = fig.gca()
+ ax2 = None
+ xrange = 0.0
+ for i in range(0, len(fields)):
+ if len(x[i]) == 0: continue
+ if lowest_x is None or x[i][0] < lowest_x:
+ lowest_x = x[i][0]
+ if highest_x is None or x[i][-1] > highest_x:
+ highest_x = x[i][-1]
+ if highest_x is None or lowest_x is None:
+ return
+ xrange = highest_x - lowest_x
+ xrange *= 24 * 60 * 60
+ formatter = matplotlib.dates.DateFormatter('%H:%M:%S')
+ interval = 1
+ intervals = [ 1, 2, 5, 10, 15, 30, 60, 120, 240, 300, 600,
+ 900, 1800, 3600, 7200, 5*3600, 10*3600, 24*3600 ]
+ for interval in intervals:
+ if xrange / interval < 15:
+ break
+ locator = matplotlib.dates.SecondLocator(interval=interval)
+ if not args.xaxis:
+ ax1.xaxis.set_major_locator(locator)
+ ax1.xaxis.set_major_formatter(formatter)
+ empty = True
+ ax1_labels = []
+ ax2_labels = []
+ for i in range(0, len(fields)):
+ if len(x[i]) == 0:
+ print("Failed to find any values for field %s" % fields[i])
+ continue
+ if i < len(colors):
+ color = colors[i]
+ else:
+ color = 'red'
+ (tz, tzdst) = time.tzname
+ if axes[i] == 2:
+ if ax2 == None:
+ ax2 = ax1.twinx()
+ ax = ax2
+ if not args.xaxis:
+ ax2.xaxis.set_major_locator(locator)
+ ax2.xaxis.set_major_formatter(formatter)
+ label = fields[i]
+ if label.endswith(":2"):
+ label = label[:-2]
+ ax2_labels.append(label)
+ else:
+ ax1_labels.append(fields[i])
+ ax = ax1
+ if args.xaxis:
+ if args.marker is not None:
+ marker = args.marker
+ else:
+ marker = '+'
+ if args.linestyle is not None:
+ linestyle = args.linestyle
+ else:
+ linestyle = 'None'
+ ax.plot(x[i], y[i], color=color, label=fields[i],
+ linestyle=linestyle, marker=marker)
+ else:
+ if args.marker is not None:
+ marker = args.marker
+ else:
+ marker = 'None'
+ if args.linestyle is not None:
+ linestyle = args.linestyle
+ else:
+ linestyle = '-'
+ ax.plot_date(x[i], y[i], color=color, label=fields[i],
+ linestyle=linestyle, marker=marker, tz=None)
+ empty = False
+ if args.flightmode is not None:
+ for i in range(len(modes)-1):
+ c = colourmap[args.flightmode].get(modes[i][1], edge_colour)
+ ax1.axvspan(modes[i][0], modes[i+1][0], fc=c, ec=edge_colour, alpha=0.1)
+ c = colourmap[args.flightmode].get(modes[-1][1], edge_colour)
+ ax1.axvspan(modes[-1][0], ax1.get_xlim()[1], fc=c, ec=edge_colour, alpha=0.1)
+ if ax1_labels != []:
+ ax1.legend(ax1_labels,loc=args.legend)
+ if ax2_labels != []:
+ ax2.legend(ax2_labels,loc=args.legend2)
+ if empty:
+ print("No data to graph")
+ return
+ return fig
+
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--planner", action='store_true', help="use planner file format")
+parser.add_argument("--condition", default=None, help="select packets by a condition")
+parser.add_argument("--labels", default=None, help="comma separated field labels")
+parser.add_argument("--legend", default='upper left', help="default legend position")
+parser.add_argument("--legend2", default='upper right', help="default legend2 position")
+parser.add_argument("--marker", default=None, help="point marker")
+parser.add_argument("--linestyle", default=None, help="line style")
+parser.add_argument("--xaxis", default=None, help="X axis expression")
+parser.add_argument("--multi", action='store_true', help="multiple files with same colours")
+parser.add_argument("--zero-time-base", action='store_true', help="use Z time base for DF logs")
+parser.add_argument("--flightmode", default=None,
+ help="Choose the plot background according to the active flight mode of the specified type, e.g. --flightmode=apm for ArduPilot or --flightmode=px4 for PX4 stack logs. Cannot be specified with --xaxis.")
+parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
+parser.add_argument("--output", default=None, help="provide an output format")
+parser.add_argument("--timeshift", type=float, default=0, help="shift time on first graph in seconds")
+parser.add_argument("logs_fields", metavar="", nargs="+")
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+if args.flightmode is not None and args.xaxis:
+ print("Cannot request flightmode backgrounds with an x-axis expression")
+ sys.exit(1)
+
+if args.flightmode is not None and args.flightmode not in colourmap:
+ print("Unknown flight controller '%s' in specification of --flightmode" % args.flightmode)
+ sys.exit(1)
+
+
+if args.output is not None:
+ matplotlib.use('Agg')
+
+import pylab
+
+filenames = []
+fields = []
+for f in args.logs_fields:
+ if os.path.exists(f):
+ filenames.append(f)
+ else:
+ fields.append(f)
+msg_types = set()
+multiplier = []
+field_types = []
+
+colors = [ 'red', 'green', 'blue', 'orange', 'olive', 'black', 'grey', 'yellow', 'brown', 'darkcyan', 'cornflowerblue', 'darkmagenta', 'deeppink', 'darkred']
+
+# work out msg types we are interested in
+x = []
+y = []
+modes = []
+axes = []
+first_only = []
+re_caps = re.compile('[A-Z_][A-Z0-9_]+')
+for f in fields:
+ caps = set(re.findall(re_caps, f))
+ msg_types = msg_types.union(caps)
+ field_types.append(caps)
+ y.append([])
+ x.append([])
+ axes.append(1)
+ first_only.append(False)
+
+def add_data(t, msg, vars, flightmode):
+ '''add some data'''
+ mtype = msg.get_type()
+ if args.flightmode is not None and (len(modes) == 0 or modes[-1][1] != flightmode):
+ modes.append((t, flightmode))
+ if mtype not in msg_types:
+ return
+ for i in range(0, len(fields)):
+ if mtype not in field_types[i]:
+ continue
+ f = fields[i]
+ if f.endswith(":2"):
+ axes[i] = 2
+ f = f[:-2]
+ if f.endswith(":1"):
+ first_only[i] = True
+ f = f[:-2]
+ v = mavutil.evaluate_expression(f, vars)
+ if v is None:
+ continue
+ if args.xaxis is None:
+ xv = t
+ else:
+ xv = mavutil.evaluate_expression(args.xaxis, vars)
+ if xv is None:
+ continue
+ y[i].append(v)
+ x[i].append(xv)
+
+def process_file(filename, timeshift):
+ '''process one file'''
+ print("Processing %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps, zero_time_base=args.zero_time_base, dialect=args.dialect)
+ vars = {}
+
+ while True:
+ msg = mlog.recv_match(args.condition)
+ if msg is None: break
+ try:
+ tdays = matplotlib.dates.date2num(datetime.datetime.fromtimestamp(msg._timestamp+timeshift))
+ except ValueError:
+ # this can happen if the log is corrupt
+ # ValueError: year is out of range
+ break
+ add_data(tdays, msg, mlog.messages, mlog.flightmode)
+
+if len(filenames) == 0:
+ print("No files to process")
+ sys.exit(1)
+
+if args.labels is not None:
+ labels = args.labels.split(',')
+ if len(labels) != len(fields)*len(filenames):
+ print("Number of labels (%u) must match number of fields (%u)" % (
+ len(labels), len(fields)*len(filenames)))
+ sys.exit(1)
+else:
+ labels = None
+
+timeshift = args.timeshift
+
+for fi in range(0, len(filenames)):
+ f = filenames[fi]
+ process_file(f, timeshift)
+ timeshift = 0
+ for i in range(0, len(x)):
+ if first_only[i] and fi != 0:
+ x[i] = []
+ y[i] = []
+ if labels:
+ lab = labels[fi*len(fields):(fi+1)*len(fields)]
+ else:
+ lab = fields[:]
+ if args.multi:
+ col = colors[:]
+ else:
+ col = colors[fi*len(fields):]
+ fig = plotit(x, y, lab, colors=col)
+ for i in range(0, len(x)):
+ x[i] = []
+ y[i] = []
+if args.output is None:
+ pylab.show()
+ pylab.draw()
+ input('press enter to exit....')
+else:
+ fname, fext = os.path.splitext(args.output)
+ if fext == '.html':
+ import mpld3
+ html = mpld3.fig_to_html(fig)
+ f_out = open(args.output, 'w')
+ f_out.write(html)
+ f_out.close()
+ else:
+ pylab.legend(loc=2,prop={'size':8})
+ pylab.savefig(args.output, bbox_inches='tight', dpi=200)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavkml.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavkml.py
new file mode 100755
index 000000000..cf2cfb5cd
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavkml.py
@@ -0,0 +1,200 @@
+#!/usr/bin/python
+
+'''
+simple kml export for logfiles
+Thomas Gubler
+'''
+
+from argparse import ArgumentParser
+import simplekml
+from pymavlink.mavextra import *
+from pymavlink import mavutil
+import time
+import re
+
+mainstate_field = 'STAT.MainState'
+position_field_types = [ # Order must be lon, lat, alt to match KML
+ ['Lon', 'Lat', 'Alt'], # PX4
+ ['Lng', 'Lat', 'Alt'] # APM > 3
+]
+
+colors = [simplekml.Color.red, simplekml.Color.green, simplekml.Color.blue,
+ simplekml.Color.violet, simplekml.Color.yellow, simplekml.Color.orange,
+ simplekml.Color.burlywood, simplekml.Color.azure, simplekml.Color.lightblue,
+ simplekml.Color.lawngreen, simplekml.Color.indianred, simplekml.Color.hotpink]
+
+kml = simplekml.Kml()
+kml_linestrings = []
+
+
+def add_to_linestring(position_data, kml_linestring):
+ '''add a point to the kml file'''
+ global kml
+
+ # add altitude offset
+ position_data[2] += float(args.aoff)
+ kml_linestring.coords.addcoordinates([position_data])
+
+
+def save_kml(filename):
+ '''saves the kml file'''
+ global kml
+ kml.save(filename)
+ print("KML written to %s" % filename)
+
+
+def add_data(t, msg, msg_types, vars, fields, field_types, position_field_type):
+ '''add some data'''
+
+ mtype = msg.get_type()
+ if mtype not in msg_types:
+ return
+
+ for i in range(0, len(fields)):
+ if mtype not in field_types[i]:
+ continue
+ f = fields[i]
+ v = mavutil.evaluate_expression(f, vars)
+ if v is None:
+ continue
+
+ # Check if we have position or state information
+ if f == mainstate_field:
+ # Handle main state information
+ # add_data.mainstate_current >= 0 : avoid starting a new linestring
+ # when mainstate comes after the first position data in the log
+ if (v != add_data.mainstate_current and
+ add_data.mainstate_current >= 0):
+ add_data.new_linestring = True
+ add_data.mainstate_current = v
+ else:
+ # Handle position information
+ # make sure lon, lat, alt is saved in the correct order in
+ # position_data (the same as in position_field_types)
+ add_data.position_data[i] = v
+
+ # check if we have a full gps measurement
+ gps_measurement_ready = True
+ for v in add_data.position_data:
+ if v is None:
+ gps_measurement_ready = False
+ if not gps_measurement_ready:
+ return
+
+ # if new line string is needed (because of state change): add previous
+ # linestring to kml_linestrings list, add a new linestring to the kml
+ # multigeometry and append to the new linestring
+ # else: append to current linestring
+ if add_data.new_linestring:
+ if add_data.current_kml_linestring is not None:
+ kml_linestrings.append(add_data.current_kml_linestring)
+
+ name = "".join([args.source, ":", str(add_data.mainstate_current)])
+ add_data.current_kml_linestring = \
+ kml.newlinestring(name=name, altitudemode='absolute')
+
+ # set rendering options
+ if args.extrude:
+ add_data.current_kml_linestring.extrude = 1
+ add_data.current_kml_linestring.style.linestyle.color = \
+ colors[max([add_data.mainstate_current, 0])]
+
+ add_data.new_linestring = False
+
+ add_to_linestring(add_data.position_data,
+ add_data.current_kml_linestring)
+ add_data.last_time = msg._timestamp
+
+ else:
+ if (msg._timestamp - add_data.last_time) > 0.1:
+ add_to_linestring(add_data.position_data,
+ add_data.current_kml_linestring)
+ add_data.last_time = msg._timestamp
+
+ # reset position_data
+ add_data.position_data = [None for n in position_field_type]
+
+
+def process_file(filename, source):
+ '''process one file'''
+ print("Processing %s" % filename)
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps)
+
+ position_field_type = sniff_field_spelling(mlog, source)
+
+ # init fields and field_types lists
+ fields = [args.source + "." + s for s in position_field_type]
+ fields.append(mainstate_field)
+ field_types = []
+
+ msg_types = set()
+ re_caps = re.compile('[A-Z_][A-Z0-9_]+')
+
+ for f in fields:
+ caps = set(re.findall(re_caps, f))
+ msg_types = msg_types.union(caps)
+ field_types.append(caps)
+
+ add_data.new_linestring = True
+ add_data.mainstate_current = -1
+ add_data.current_kml_linestring = None
+ add_data.position_data = [None for n in position_field_type]
+ add_data.last_time = 0
+
+ while True:
+ msg = mlog.recv_match(args.condition)
+ if msg is None:
+ break
+ tdays = (msg._timestamp - time.timezone) / (24 * 60 * 60)
+ tdays += 719163 # pylab wants it since 0001-01-01
+ add_data(tdays, msg, msg_types, mlog.messages, fields, field_types, position_field_type)
+
+
+def sniff_field_spelling(mlog, source):
+ '''attempt to detect whether APM or PX4 attributes names are in use'''
+ position_field_type_default = position_field_types[0] # Default to PX4 spelling
+
+ msg = mlog.recv_match(source)
+ mlog._rewind() # Unfortunately it's either call this or return a mutated object
+
+ position_field_selection = [spelling for spelling in position_field_types if hasattr(msg, spelling[0])]
+
+ return position_field_selection[0] if position_field_selection else position_field_type_default
+
+
+if __name__ == '__main__':
+ parser = ArgumentParser(description=__doc__)
+ parser.add_argument("--no-timestamps", dest="notimestamps",
+ action='store_true', help="Log doesn't have timestamps")
+ parser.add_argument("--condition", default=None,
+ help="select packets by a condition [default: %(default)s]")
+ parser.add_argument("--aoff", default=0.,
+ help="Altitude offset for paths that go through the"
+ "ground in google earth [default: %(default)s]")
+ parser.add_argument("-o", "--output", dest="filename_out", default="mav.kml",
+ help="Output filename [default: %(default)s] ")
+ parser.add_argument("-s", "--source", default="GPOS",
+ help="Select position data source"
+ "(GPOS or GPS) [default: %(default)s]")
+ parser.add_argument("-e", "--extrude", default=False,
+ action='store_true',
+ help="Extrude paths to ground [default: %(default)s]")
+ parser.add_argument("logs", metavar="LOG", nargs="+")
+
+ args = parser.parse_args()
+
+ filenames = []
+ for f in args.logs:
+ if os.path.exists(f):
+ filenames.append(f)
+
+ if len(filenames) == 0:
+ print("No files to process")
+ sys.exit(1)
+
+ for fi in range(0, len(filenames)):
+ f = filenames[fi]
+ process_file(f, args.source)
+
+ save_kml(args.filename_out)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavlogdump.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavlogdump.py
new file mode 100755
index 000000000..b72bb199c
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavlogdump.py
@@ -0,0 +1,228 @@
+#!/usr/bin/env python
+
+'''
+example program that dumps a Mavlink log file. The log file is
+assumed to be in the format that qgroundcontrol uses, which consists
+of a series of MAVLink packets, each with a 64 bit timestamp
+header. The timestamp is in microseconds since 1970 (unix epoch)
+'''
+
+import sys, time, os, struct, json, fnmatch
+
+try:
+ from pymavlink.mavextra import *
+except:
+ print("WARNING: Numpy missing, mathematical notation will not be supported..")
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--planner", action='store_true', help="use planner file format")
+parser.add_argument("--robust", action='store_true', help="Enable robust parsing (skip over bad data)")
+parser.add_argument("-f", "--follow", action='store_true', help="keep waiting for more data at end of file")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("-q", "--quiet", action='store_true', help="don't display packets")
+parser.add_argument("-o", "--output", default=None, help="output matching packets to give file")
+parser.add_argument("-p", "--parms", action='store_true', help="preserve parameters in output with -o")
+parser.add_argument("--format", default=None, help="Change the output format between 'standard', 'json', and 'csv'. For the CSV output, you must supply types that you want.")
+parser.add_argument("--csv_sep", dest="csv_sep", default=",", help="Select the delimiter between columns for the output CSV file. Use 'tab' to specify tabs. Only applies when --format=csv")
+parser.add_argument("--types", default=None, help="types of messages (comma separated with wildcard)")
+parser.add_argument("--nottypes", default=None, help="types of messages not to include (comma separated with wildcard)")
+parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
+parser.add_argument("--zero-time-base", action='store_true', help="use Z time base for DF logs")
+parser.add_argument("--no-bad-data", action='store_true', help="Don't output corrupted messages")
+parser.add_argument("--show-source", action='store_true', help="Show source system ID and component ID")
+parser.add_argument("--show-seq", action='store_true', help="Show sequence numbers")
+parser.add_argument("--source-system", type=int, default=None, help="filter by source system ID")
+parser.add_argument("--source-component", type=int, default=None, help="filter by source component ID")
+parser.add_argument("--link", type=int, default=None, help="filter by comms link ID")
+parser.add_argument("log", metavar="LOG")
+args = parser.parse_args()
+
+import inspect
+
+from pymavlink import mavutil
+
+
+filename = args.log
+mlog = mavutil.mavlink_connection(filename, planner_format=args.planner,
+ notimestamps=args.notimestamps,
+ robust_parsing=args.robust,
+ dialect=args.dialect,
+ zero_time_base=args.zero_time_base)
+
+output = None
+if args.output:
+ output = open(args.output, mode='wb')
+
+types = args.types
+if types is not None:
+ types = types.split(',')
+
+nottypes = args.nottypes
+if nottypes is not None:
+ nottypes = nottypes.split(',')
+
+ext = os.path.splitext(filename)[1]
+isbin = ext in ['.bin', '.BIN']
+islog = ext in ['.log', '.LOG'] # NOTE: "islog" does not mean a tlog
+
+if args.csv_sep == "tab":
+ args.csv_sep = "\t"
+
+def match_type(mtype, patterns):
+ '''return True if mtype matches pattern'''
+ for p in patterns:
+ if fnmatch.fnmatch(mtype, p):
+ return True
+ return False
+
+# Write out a header row as we're outputting in CSV format.
+fields = ['timestamp']
+offsets = {}
+if islog and args.format == 'csv': # we know our fields from the get-go
+ try:
+ currentOffset = 1 # Store how many fields in we are for each message.
+ for type in types:
+ try:
+ typeClass = "MAVLink_{0}_message".format(type.lower())
+ fields += [type + '.' + x for x in inspect.getargspec(getattr(mavutil.mavlink, typeClass).__init__).args[1:]]
+ offsets[type] = currentOffset
+ currentOffset += len(fields)
+ except IndexError:
+ quit()
+ except TypeError:
+ print("You must specify a list of message types if outputting CSV format via the --types argument.")
+ exit()
+
+ # The first line output are names for all columns
+ csv_out = ["" for x in fields]
+ print(','.join(fields))
+
+if isbin and args.format == 'csv': # need to accumulate columns from message
+ if types is None or len(types) != 1:
+ print("Need exactly one type when dumping CSV from bin file")
+ quit()
+
+# Track the last timestamp value. Used for compressing data for the CSV output format.
+last_timestamp = None
+
+# Keep track of data from the current timestep. If the following timestep has the same data, it's stored in here as well. Output should therefore have entirely unique timesteps.
+while True:
+ m = mlog.recv_match(blocking=args.follow)
+ if m is None:
+ # FIXME: Make sure to output the last CSV message before dropping out of this loop
+ break
+ if isbin and m.get_type() == "FMT" and args.format == 'csv':
+ if m.Name == types[0]:
+ fields += m.Columns.split(',')
+ csv_out = ["" for x in fields]
+ print(','.join(fields))
+
+ if output is not None:
+ if (isbin or islog) and m.get_type() == "FMT":
+ output.write(m.get_msgbuf())
+ continue
+ if (isbin or islog) and (m.get_type() == "PARM" and args.parms):
+ output.write(m.get_msgbuf())
+ continue
+ if m.get_type() == 'PARAM_VALUE' and args.parms:
+ timestamp = getattr(m, '_timestamp', None)
+ output.write(struct.pack('>Q', timestamp*1.0e6) + m.get_msgbuf())
+ continue
+
+ if not mavutil.evaluate_condition(args.condition, mlog.messages):
+ continue
+ if args.source_system is not None and args.source_system != m.get_srcSystem():
+ continue
+ if args.source_component is not None and args.source_component != m.get_srcComponent():
+ continue
+ if args.link is not None and args.link != m._link:
+ continue
+
+ if types is not None and m.get_type() != 'BAD_DATA' and not match_type(m.get_type(), types):
+ continue
+
+ if nottypes is not None and match_type(m.get_type(), nottypes):
+ continue
+
+ # Ignore BAD_DATA messages is the user requested or if they're because of a bad prefix. The
+ # latter case is normally because of a mismatched MAVLink version.
+ if m.get_type() == 'BAD_DATA' and (args.no_bad_data is True or m.reason == "Bad prefix"):
+ continue
+
+ # Grab the timestamp.
+ timestamp = getattr(m, '_timestamp', 0.0)
+
+ # If we're just logging, pack in the timestamp and data into the output file.
+ if output:
+ if not (isbin or islog):
+ output.write(struct.pack('>Q', timestamp*1.0e6))
+ try:
+ output.write(m.get_msgbuf())
+ except Exception as ex:
+ print("Failed to write msg %s" % m.get_type())
+ pass
+
+ # If quiet is specified, don't display output to the terminal.
+ if args.quiet:
+ continue
+
+ # If JSON was ordered, serve it up. Split it nicely into metadata and data.
+ if args.format == 'json':
+ # Format our message as a Python dict, which gets us almost to proper JSON format
+ data = m.to_dict()
+
+ # Remove the mavpackettype value as we specify that later.
+ del data['mavpackettype']
+
+ # Also, if it's a BAD_DATA message, make it JSON-compatible by removing array objects
+ if 'data' in data and type(data['data']) is not dict:
+ data['data'] = list(data['data'])
+
+ # Prepare the message as a single object with 'meta' and 'data' keys holding
+ # the message's metadata and actual data respectively.
+ outMsg = {"meta": {"type": m.get_type(), "timestamp": timestamp}, "data": data}
+
+ # Now print out this object with stringified properly.
+ print(json.dumps(outMsg))
+ # CSV format outputs columnar data with a user-specified delimiter
+ elif args.format == 'csv':
+ data = m.to_dict()
+ type = m.get_type()
+
+ # If this message has a duplicate timestamp, copy its data into the existing data list. Also
+ # do this if it's the first message encountered.
+ if timestamp == last_timestamp or last_timestamp is None:
+ if isbin:
+ newData = [str(data[y]) if y != "timestamp" else "" for y in fields]
+ else:
+ newData = [str(data[y.split('.')[-1]]) if y.split('.')[0] == type and y.split('.')[-1] in data else "" for y in fields]
+
+ for i, val in enumerate(newData):
+ if val:
+ csv_out[i] = val
+
+ # Otherwise if this is a new timestamp, print out the old output data, and store the current message for later output.
+ else:
+ csv_out[0] = "{:.8f}".format(last_timestamp)
+ print(args.csv_sep.join(csv_out))
+ if isbin:
+ csv_out = [str(data[y]) if y != "timestamp" else "" for y in fields]
+ else:
+ csv_out = [str(data[y.split('.')[-1]]) if y.split('.')[0] == type and y.split('.')[-1] in data else "" for y in fields]
+ # Otherwise we output in a standard Python dict-style format
+ else:
+ s = "%s.%02u: %s" % (time.strftime("%Y-%m-%d %H:%M:%S",
+ time.localtime(timestamp)),
+ int(timestamp*100.0)%100, m)
+ if args.show_source:
+ s += " srcSystem=%u srcComponent=%u" % (m.get_srcSystem(), m.get_srcComponent())
+ if args.show_seq:
+ s += " seq=%u" % m.get_seq()
+ print(s)
+
+ # Update our last timestamp value.
+ last_timestamp = timestamp
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavloss.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavloss.py
new file mode 100755
index 000000000..8e88a764d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavloss.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+'''
+show MAVLink packet loss
+'''
+
+import sys, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--planner", action='store_true', help="use planner file format")
+parser.add_argument("--robust", action='store_true', help="Enable robust parsing (skip over bad data)")
+parser.add_argument("--condition", default=None, help="condition for packets")
+parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+def mavloss(logfile):
+ '''work out signal loss times for a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename,
+ planner_format=args.planner,
+ notimestamps=args.notimestamps,
+ dialect=args.dialect,
+ robust_parsing=args.robust)
+
+ # Track the reasons for MAVLink parsing errors and print them all out at the end.
+ reason_ids = set()
+ reasons = []
+
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+
+ # Stop parsing the file once we've reached the end
+ if m is None:
+ break
+
+ # Save the parsing failure reason for this message if it's a new one
+ if m.get_type() == 'BAD_DATA':
+ reason_id = ''.join(m.reason.split(' ')[0:3])
+ if reason_id not in reason_ids:
+ reason_ids.add(reason_id)
+ reasons.append(m.reason)
+
+ # Print out the final packet loss results
+ print("%u packets, %u lost %.1f%%" % (
+ mlog.mav_count, mlog.mav_loss, mlog.packet_loss()))
+
+ # Also print out the reasons why losses occurred
+ if len(reasons) > 0:
+ print("Packet loss at least partially attributed to the following:")
+ for r in reasons:
+ print(" * " + r)
+
+for filename in args.logs:
+ mavloss(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavmission.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavmission.py
new file mode 100755
index 000000000..c1d2f9063
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavmission.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+'''
+extract mavlink mission from log
+'''
+
+import sys, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--output", default='mission.txt', help="output file")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil, mavwp
+
+parms = {}
+
+def mavmission(logfile):
+ '''extract mavlink mission'''
+ mlog = mavutil.mavlink_connection(filename)
+
+ wp = mavwp.MAVWPLoader()
+
+ while True:
+ m = mlog.recv_match(type=['MISSION_ITEM','CMD','WAYPOINT'])
+ if m is None:
+ break
+ if m.get_type() == 'CMD':
+ m = mavutil.mavlink.MAVLink_mission_item_message(0,
+ 0,
+ m.CNum,
+ mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT,
+ m.CId,
+ 0, 1,
+ m.Prm1, m.Prm2, m.Prm3, m.Prm4,
+ m.Lat, m.Lng, m.Alt)
+ if m.current >= 2:
+ continue
+
+ while m.seq > wp.count():
+ print("Adding dummy WP %u" % wp.count())
+ wp.set(m, wp.count())
+ wp.set(m, m.seq)
+ wp.save(args.output)
+ print("Saved %u waypoints to %s" % (wp.count(), args.output))
+
+
+total = 0.0
+for filename in args.logs:
+ mavmission(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparmdiff.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparmdiff.py
new file mode 100755
index 000000000..040c74b06
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparmdiff.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+'''
+compare two MAVLink parameter files
+'''
+
+import sys, os
+
+from pymavlink import mavutil, mavparm
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("file1", metavar="FILE1")
+parser.add_argument("file2", metavar="FILE2")
+args = parser.parse_args()
+
+file1 = args.file1
+file2 = args.file2
+
+p1 = mavparm.MAVParmDict()
+p2 = mavparm.MAVParmDict()
+p1.load(file2)
+p1.diff(file1)
+
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparms.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparms.py
new file mode 100755
index 000000000..f3ef623ea
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavparms.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+'''
+extract mavlink parameter values
+'''
+
+import sys, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("-c", "--changes", dest="changesOnly", default=False, action="store_true", help="Show only changes to parameters.")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+parms = {}
+
+def mavparms(logfile):
+ '''extract mavlink parameters'''
+ mlog = mavutil.mavlink_connection(filename)
+
+ while True:
+ try:
+ m = mlog.recv_match(type=['PARAM_VALUE', 'PARM'])
+ if m is None:
+ return
+ except Exception:
+ return
+ if m.get_type() == 'PARAM_VALUE':
+ pname = str(m.param_id).strip()
+ value = m.param_value
+ else:
+ pname = m.Name
+ value = m.Value
+ if len(pname) > 0:
+ if args.changesOnly is True and pname in parms and parms[pname] != value:
+ print("%s %-15s %.6f -> %.6f" % (time.asctime(time.localtime(m._timestamp)), pname, parms[pname], value))
+
+ parms[pname] = value
+
+total = 0.0
+for filename in args.logs:
+ mavparms(filename)
+
+if (args.changesOnly is False):
+ keys = parms.keys()
+ keys.sort()
+ for p in keys:
+ print("%-15s %.6f" % (p, parms[p]))
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavplayback.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavplayback.py
new file mode 100755
index 000000000..0eca78d9b
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavplayback.py
@@ -0,0 +1,249 @@
+#!/usr/bin/env python
+
+'''
+play back a mavlink log as a FlightGear FG NET stream, and as a
+realtime mavlink stream
+
+Useful for visualising flights
+'''
+
+import sys, time, os, struct
+import Tkinter
+
+from pymavlink import fgFDM
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+
+parser.add_argument("--planner", action='store_true', help="use planner file format")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--gpsalt", action='store_true', default=False, help="Use GPS altitude")
+parser.add_argument("--mav10", action='store_true', default=False, help="Use MAVLink protocol 1.0")
+parser.add_argument("--out", help="MAVLink output port (IP:port)",
+ action='append', default=['127.0.0.1:14550'])
+parser.add_argument("--fgout", action='append', default=['127.0.0.1:5503'],
+ help="flightgear FDM NET output (IP:port)")
+parser.add_argument("--baudrate", type=int, default=57600, help='baud rate')
+parser.add_argument("log", metavar="LOG")
+args = parser.parse_args()
+
+if args.mav10:
+ os.environ['MAVLINK10'] = '1'
+from pymavlink import mavutil
+
+filename = args.log
+
+
+def LoadImage(filename):
+ '''return an image from the images/ directory'''
+ app_dir = os.path.dirname(os.path.realpath(__file__))
+ path = os.path.join(app_dir, 'images', filename)
+ return Tkinter.PhotoImage(file=path)
+
+
+class App():
+ def __init__(self, filename):
+ self.root = Tkinter.Tk()
+
+ self.filesize = os.path.getsize(filename)
+ self.filepos = 0.0
+
+ self.mlog = mavutil.mavlink_connection(filename, planner_format=args.planner,
+ robust_parsing=True)
+ self.mout = []
+ for m in args.out:
+ self.mout.append(mavutil.mavlink_connection(m, input=False, baud=args.baudrate))
+
+ self.fgout = []
+ for f in args.fgout:
+ self.fgout.append(mavutil.mavudp(f, input=False))
+
+ self.fdm = fgFDM.fgFDM()
+
+ self.msg = self.mlog.recv_match(condition=args.condition)
+ if self.msg is None:
+ sys.exit(1)
+ self.last_timestamp = getattr(self.msg, '_timestamp')
+
+ self.paused = False
+
+ self.topframe = Tkinter.Frame(self.root)
+ self.topframe.pack(side=Tkinter.TOP)
+
+ self.frame = Tkinter.Frame(self.root)
+ self.frame.pack(side=Tkinter.LEFT)
+
+ self.slider = Tkinter.Scale(self.topframe, from_=0, to=1.0, resolution=0.01,
+ orient=Tkinter.HORIZONTAL, command=self.slew)
+ self.slider.pack(side=Tkinter.LEFT)
+
+ self.clock = Tkinter.Label(self.topframe,text="")
+ self.clock.pack(side=Tkinter.RIGHT)
+
+ self.playback = Tkinter.Spinbox(self.topframe, from_=0, to=20, increment=0.1, width=3)
+ self.playback.pack(side=Tkinter.BOTTOM)
+ self.playback.delete(0, "end")
+ self.playback.insert(0, 1)
+
+ self.buttons = {}
+ self.button('quit', 'gtk-quit.gif', self.frame.quit)
+ self.button('pause', 'media-playback-pause.gif', self.pause)
+ self.button('rewind', 'media-seek-backward.gif', self.rewind)
+ self.button('forward', 'media-seek-forward.gif', self.forward)
+ self.button('status', 'Status', self.status)
+ self.flightmode = Tkinter.Label(self.frame,text="")
+ self.flightmode.pack(side=Tkinter.RIGHT)
+
+ self.next_message()
+ self.root.mainloop()
+
+ def button(self, name, filename, command):
+ '''add a button'''
+ try:
+ img = LoadImage(filename)
+ b = Tkinter.Button(self.frame, image=img, command=command)
+ b.image = img
+ except Exception:
+ b = Tkinter.Button(self.frame, text=filename, command=command)
+ b.pack(side=Tkinter.LEFT)
+ self.buttons[name] = b
+
+
+ def pause(self):
+ '''pause playback'''
+ self.paused = not self.paused
+
+ def rewind(self):
+ '''rewind 10%'''
+ pos = int(self.mlog.f.tell() - 0.1*self.filesize)
+ if pos < 0:
+ pos = 0
+ self.mlog.f.seek(pos)
+ self.find_message()
+
+ def forward(self):
+ '''forward 10%'''
+ pos = int(self.mlog.f.tell() + 0.1*self.filesize)
+ if pos > self.filesize:
+ pos = self.filesize - 2048
+ self.mlog.f.seek(pos)
+ self.find_message()
+
+ def status(self):
+ '''show status'''
+ for m in sorted(self.mlog.messages.keys()):
+ print(str(self.mlog.messages[m]))
+
+
+
+ def find_message(self):
+ '''find the next valid message'''
+ while True:
+ self.msg = self.mlog.recv_match(condition=args.condition)
+ if self.msg is not None and self.msg.get_type() != 'BAD_DATA':
+ break
+ if self.mlog.f.tell() > self.filesize - 10:
+ self.paused = True
+ break
+ self.last_timestamp = getattr(self.msg, '_timestamp')
+
+ def slew(self, value):
+ '''move to a given position in the file'''
+ if float(value) != self.filepos:
+ pos = float(value) * self.filesize
+ self.mlog.f.seek(int(pos))
+ self.find_message()
+
+
+ def next_message(self):
+ '''called as each msg is ready'''
+
+ msg = self.msg
+ if msg is None:
+ self.paused = True
+
+ if self.paused:
+ self.root.after(100, self.next_message)
+ return
+
+ try:
+ speed = float(self.playback.get())
+ except:
+ speed = 0.0
+ timestamp = getattr(msg, '_timestamp')
+
+ now = time.strftime("%H:%M:%S", time.localtime(timestamp))
+ self.clock.configure(text=now)
+
+ if speed == 0.0:
+ self.root.after(200, self.next_message)
+ else:
+ self.root.after(int(1000*(timestamp - self.last_timestamp) / speed), self.next_message)
+ self.last_timestamp = timestamp
+
+ while True:
+ self.msg = self.mlog.recv_match(condition=args.condition)
+ if self.msg is None and self.mlog.f.tell() > self.filesize - 10:
+ self.paused = True
+ return
+ if self.msg is not None and self.msg.get_type() != "BAD_DATA":
+ break
+
+ pos = float(self.mlog.f.tell()) / self.filesize
+ self.slider.set(pos)
+ self.filepos = self.slider.get()
+
+ if msg.get_type() != "BAD_DATA":
+ for m in self.mout:
+ m.write(msg.get_msgbuf())
+
+ if msg.get_type() == "GPS_RAW":
+ self.fdm.set('latitude', msg.lat, units='degrees')
+ self.fdm.set('longitude', msg.lon, units='degrees')
+ if args.gpsalt:
+ self.fdm.set('altitude', msg.alt, units='meters')
+
+ if msg.get_type() == "GPS_RAW_INT":
+ self.fdm.set('latitude', msg.lat/1.0e7, units='degrees')
+ self.fdm.set('longitude', msg.lon/1.0e7, units='degrees')
+ if args.gpsalt:
+ self.fdm.set('altitude', msg.alt/1.0e3, units='meters')
+
+ if msg.get_type() == "VFR_HUD":
+ if not args.gpsalt:
+ self.fdm.set('altitude', msg.alt, units='meters')
+ self.fdm.set('num_engines', 1)
+ self.fdm.set('vcas', msg.airspeed, units='mps')
+
+ if msg.get_type() == "ATTITUDE":
+ self.fdm.set('phi', msg.roll, units='radians')
+ self.fdm.set('theta', msg.pitch, units='radians')
+ self.fdm.set('psi', msg.yaw, units='radians')
+ self.fdm.set('phidot', msg.rollspeed, units='rps')
+ self.fdm.set('thetadot', msg.pitchspeed, units='rps')
+ self.fdm.set('psidot', msg.yawspeed, units='rps')
+
+ if msg.get_type() == "RC_CHANNELS_SCALED":
+ self.fdm.set("right_aileron", msg.chan1_scaled*0.0001)
+ self.fdm.set("left_aileron", -msg.chan1_scaled*0.0001)
+ self.fdm.set("rudder", msg.chan4_scaled*0.0001)
+ self.fdm.set("elevator", msg.chan2_scaled*0.0001)
+ self.fdm.set('rpm', msg.chan3_scaled*0.01)
+
+ if msg.get_type() == 'STATUSTEXT':
+ print("APM: %s" % msg.text)
+
+ if msg.get_type() == 'SYS_STATUS':
+ self.flightmode.configure(text=self.mlog.flightmode)
+
+ if msg.get_type() == "BAD_DATA":
+ if mavutil.all_printable(msg.data):
+ sys.stdout.write(msg.data)
+ sys.stdout.flush()
+
+ if self.fdm.get('latitude') != 0:
+ for f in self.fgout:
+ f.write(self.fdm.pack())
+
+
+app=App(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsearch.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsearch.py
new file mode 100755
index 000000000..217dd5250
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsearch.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+'''
+search a set of log files for a condition
+'''
+
+import sys, time, os
+
+from pymavlink import mavutil
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--condition", default=None, help="conditional check on log")
+parser.add_argument("--types", default=None, help="message types to look for (comma separated)")
+parser.add_argument("--stop", action='store_true', help="stop when message type found")
+parser.add_argument("--stopcondition", action='store_true', help="stop when condition met")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+def mavsearch(filename):
+ print("Loading %s ..." % filename)
+ mlog = mavutil.mavlink_connection(filename)
+ if args.types is not None:
+ types = args.types.split(',')
+ else:
+ types = None
+ while True:
+ m = mlog.recv_match(type=types)
+ if m is None:
+ break
+ if mlog.check_condition(args.condition):
+ print(m)
+ if args.stopcondition:
+ break
+ if args.stop:
+ break
+
+
+for f in args.logs:
+ mavsearch(f)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsigloss.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsigloss.py
new file mode 100755
index 000000000..32bcac1ba
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsigloss.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+'''
+show times when signal is lost
+'''
+
+import sys, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--planner", action='store_true', help="use planner file format")
+parser.add_argument("--robust", action='store_true', help="Enable robust parsing (skip over bad data)")
+parser.add_argument("--deltat", type=float, default=1.0, help="loss threshold in seconds")
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("--types", default=None, help="types of messages (comma separated)")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+def sigloss(logfile):
+ '''work out signal loss times for a log file'''
+ print("Processing log %s" % filename)
+ mlog = mavutil.mavlink_connection(filename,
+ planner_format=args.planner,
+ notimestamps=args.notimestamps,
+ robust_parsing=args.robust)
+
+ last_t = 0
+
+ types = args.types
+ if types is not None:
+ types = types.split(',')
+
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ return
+ if types is not None and m.get_type() not in types:
+ continue
+ if args.notimestamps:
+ if not 'usec' in m._fieldnames:
+ continue
+ t = m.usec / 1.0e6
+ else:
+ t = m._timestamp
+ if last_t != 0:
+ if t - last_t > args.deltat:
+ print("Sig lost for %.1fs at %s" % (t-last_t, time.asctime(time.localtime(t))))
+ last_t = t
+
+total = 0.0
+for filename in args.logs:
+ sigloss(filename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsummarize.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsummarize.py
new file mode 100644
index 000000000..5ae33e204
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavsummarize.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+
+'''
+Summarize MAVLink logs. Useful for identifying which log is of interest in a large set.
+'''
+
+import sys, time, os, glob
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--no-timestamps", dest="notimestamps", action='store_true', help="Log doesn't have timestamps")
+parser.add_argument("--condition", default=None, help="condition for packets")
+parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+
+args = parser.parse_args()
+
+from pymavlink import mavutil
+from pymavlink.mavextra import distance_two
+
+
+class Totals:
+ def __init__(self):
+ self.time = 0
+ self.distance = 0
+ self.flights = 0
+
+ def print_summary(self):
+ print("===============================")
+ print("Num Flights : %u" % self.flights)
+ print("Total distance : {:0.2f}m".format(self.distance))
+ print("Total time (mm:ss): {:3.0f}:{:02.0f}".format(self.time / 60, self.time % 60))
+
+
+totals = Totals()
+
+def PrintSummary(logfile):
+ '''Calculate some interesting datapoints of the file'''
+ # Open the log file
+ mlog = mavutil.mavlink_connection(filename, notimestamps=args.notimestamps, dialect=args.dialect)
+
+ autonomous_sections = 0 # How many different autonomous sections there are
+ autonomous = False # Whether the vehicle is currently autonomous at this point in the logfile
+ auto_time = 0.0 # The total time the vehicle was autonomous/guided (seconds)
+ start_time = None # The datetime of the first received message (seconds since epoch)
+ total_dist = 0.0 # The total ground distance travelled (meters)
+ last_gps_msg = None # The first GPS message received
+ first_gps_msg = None # The last GPS message received
+ true_time = None # Track the first timestamp found that corresponds to a UNIX timestamp
+
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+
+ # If there's no match, it means we're done processing the log.
+ if m is None:
+ break
+
+ # Ignore any failed messages
+ if m.get_type() == 'BAD_DATA':
+ continue
+
+ # Keep track of the latest timestamp for various calculations
+ timestamp = getattr(m, '_timestamp', 0.0)
+
+ # Log the first message time
+ if start_time is None:
+ start_time = timestamp
+
+ # Log the first timestamp found that is a true timestamp. We first try
+ # to get the groundstation timestamp from the log directly. If that fails
+ # we try to find a message that outputs a Unix time-since-epoch.
+ if true_time is None:
+ if not args.notimestamps and timestamp >= 1230768000:
+ true_time = timestamp
+ elif 'time_unix_usec' in m.__dict__ and m.time_unix_usec >= 1230768000:
+ true_time = m.time_unix_usec * 1.0e-6
+ elif 'time_usec' in m.__dict__ and m.time_usec >= 1230768000:
+ true_time = m.time_usec * 1.0e-6
+
+ # Track the vehicle's speed and status
+ if m.get_type() == 'GPS_RAW_INT':
+
+ # Ignore GPS messages without a proper fix
+ if m.fix_type < 3 or m.lat == 0 or m.lon == 0:
+ continue
+
+ # Log the first GPS location found, being sure to skip GPS fixes
+ # that are bad (at lat/lon of 0,0)
+ if first_gps_msg is None:
+ first_gps_msg = m
+
+ # Track the distance travelled, being sure to skip GPS fixes
+ # that are bad (at lat/lon of 0,0)
+ if last_gps_msg is None or m.time_usec > last_gps_msg.time_usec or m.time_usec+30e6 < last_gps_msg.time_usec:
+ if last_gps_msg is not None:
+ total_dist += distance_two(last_gps_msg, m)
+
+ # Save this GPS message to do simple distance calculations with
+ last_gps_msg = m
+
+ elif m.get_type() == 'HEARTBEAT':
+ if m.type == mavutil.mavlink.MAV_TYPE_GCS:
+ continue
+ if (m.base_mode & mavutil.mavlink.MAV_MODE_FLAG_GUIDED_ENABLED or
+ m.base_mode & mavutil.mavlink.MAV_MODE_FLAG_AUTO_ENABLED) and autonomous == False:
+ autonomous = True
+ autonomous_sections += 1
+ start_auto_time = timestamp
+ elif (not m.base_mode & mavutil.mavlink.MAV_MODE_FLAG_GUIDED_ENABLED and
+ not m.base_mode & mavutil.mavlink.MAV_MODE_FLAG_AUTO_ENABLED) and autonomous == True:
+ autonomous = False
+ auto_time += timestamp - start_auto_time
+
+ # If there were no messages processed, say so
+ if start_time is None:
+ print("ERROR: No messages found.")
+ return
+
+ # If the vehicle ends in autonomous mode, make sure we log the total time
+ if autonomous == True:
+ auto_time += timestamp - start_auto_time
+
+ # Compute the total logtime, checking that timestamps are 2009 or newer for validity
+ # (MAVLink didn't exist until 2009)
+ if true_time:
+ start_time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(true_time))
+ print("Log started at about {}".format(start_time_str))
+ else:
+ print("Warning: No absolute timestamp found in datastream. No starting time can be provided for this log.")
+
+ # Print location data
+ if last_gps_msg is not None:
+ first_gps_position = (first_gps_msg.lat / 1e7, first_gps_msg.lon / 1e7)
+ last_gps_position = (last_gps_msg.lat / 1e7, last_gps_msg.lon / 1e7)
+ print("Travelled from ({0[0]}, {0[1]}) to ({1[0]}, {1[1]})".format(first_gps_position, last_gps_position))
+ print("Total distance : {:0.2f}m".format(total_dist))
+ else:
+ print("Warning: No GPS data found, can't give position summary.")
+
+ # Print out the rest of the results.
+ total_time = timestamp - start_time
+ print("Total time (mm:ss): {:3.0f}:{:02.0f}".format(total_time / 60, total_time % 60))
+ # The autonomous time should be good, as a steady HEARTBEAT is required for MAVLink operation
+ print("Autonomous sections: {}".format(autonomous_sections))
+ if autonomous_sections > 0:
+ print("Autonomous time (mm:ss): {:3.0f}:{:02.0f}".format(auto_time / 60, auto_time % 60))
+
+ totals.time += total_time
+ totals.distance += total_dist
+ totals.flights += 1
+
+for filename in args.logs:
+ for f in glob.glob(filename):
+ print("Processing log %s" % filename)
+ PrintSummary(f)
+
+totals.print_summary()
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtogpx.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtogpx.py
new file mode 100755
index 000000000..4825e5561
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtogpx.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+
+'''
+example program to extract GPS data from a mavlink log, and create a GPX
+file, for loading into google earth
+'''
+
+import sys, struct, time, os
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+parser.add_argument("--condition", default=None, help="select packets by a condition")
+parser.add_argument("--nofixcheck", default=False, action='store_true', help="don't check for GPS fix")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+args = parser.parse_args()
+
+from pymavlink import mavutil
+
+
+def mav_to_gpx(infilename, outfilename):
+ '''convert a mavlink log file to a GPX file'''
+
+ mlog = mavutil.mavlink_connection(infilename)
+ outf = open(outfilename, mode='w')
+
+ def process_packet(timestamp, lat, lon, alt, hdg, v):
+ t = time.localtime(timestamp)
+ outf.write('''
+ %s
+
+ %s
+ %s
+ 3d
+
+''' % (lat, lon, alt,
+ time.strftime("%Y-%m-%dT%H:%M:%SZ", t),
+ hdg, v))
+
+ def add_header():
+ outf.write('''
+
+
+
+''')
+
+ def add_footer():
+ outf.write('''
+
+
+''')
+
+ add_header()
+
+ count=0
+ lat=0
+ lon=0
+ fix=0
+ while True:
+ m = mlog.recv_match(type=['GPS_RAW', 'GPS_RAW_INT', 'GPS', 'GPS2'], condition=args.condition)
+ if m is None:
+ break
+ if m.get_type() == 'GPS_RAW_INT':
+ lat = m.lat/1.0e7
+ lon = m.lon/1.0e7
+ alt = m.alt/1.0e3
+ v = m.vel/100.0
+ hdg = m.cog/100.0
+ timestamp = m._timestamp
+ fix = m.fix_type
+ elif m.get_type() == 'GPS_RAW':
+ lat = m.lat
+ lon = m.lon
+ alt = m.alt
+ v = m.v
+ hdg = m.hdg
+ timestamp = m._timestamp
+ fix = m.fix_type
+ elif m.get_type() == 'GPS' or m.get_type() == 'GPS2':
+ lat = m.Lat
+ lon = m.Lng
+ alt = m.Alt
+ v = m.Spd
+ hdg = m.GCrs
+ timestamp = m._timestamp
+ fix = m.Status
+ else:
+ pass
+
+ if fix < 2 and not args.nofixcheck:
+ continue
+ if lat == 0.0 or lon == 0.0:
+ continue
+ process_packet(timestamp, lat, lon, alt, hdg, v)
+ count += 1
+ add_footer()
+ print("Created %s with %u points" % (outfilename, count))
+
+
+for infilename in args.logs:
+ outfilename = infilename + '.gpx'
+ mav_to_gpx(infilename, outfilename)
diff --git a/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtomfile.py b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtomfile.py
new file mode 100755
index 000000000..000a86640
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/pymavlink/tools/mavtomfile.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+'''
+convert a MAVLink tlog file to a MATLab mfile
+'''
+
+import sys, os
+import re
+from pymavlink import mavutil
+
+def process_tlog(filename):
+ '''convert a tlog to a .m file'''
+
+ print("Processing %s" % filename)
+
+ mlog = mavutil.mavlink_connection(filename, dialect=args.dialect, zero_time_base=True)
+
+ # first walk the entire file, grabbing all messages into a hash of lists,
+ #and the first message of each type into a hash
+ msg_types = {}
+ msg_lists = {}
+
+ types = args.types
+ if types is not None:
+ types = types.split(',')
+
+ # note that Octave doesn't like any extra '.', '*', '-', characters in the filename
+ (head, tail) = os.path.split(filename)
+ basename = '.'.join(tail.split('.')[:-1])
+ mfilename = re.sub('[\.\-\+\*]','_', basename) + '.m'
+ # Octave also doesn't like files that don't start with a letter
+ if (re.match('^[a-zA-z]', mfilename) == None):
+ mfilename = 'm_' + mfilename
+
+ if head is not None:
+ mfilename = os.path.join(head, mfilename)
+ print("Creating %s" % mfilename)
+
+ f = open(mfilename, "w")
+
+ type_counters = {}
+
+ while True:
+ m = mlog.recv_match(condition=args.condition)
+ if m is None:
+ break
+
+ if types is not None and m.get_type() not in types:
+ continue
+ if m.get_type() == 'BAD_DATA':
+ continue
+
+ fieldnames = m._fieldnames
+ mtype = m.get_type()
+ if mtype in ['FMT', 'PARM']:
+ continue
+
+ if mtype not in type_counters:
+ type_counters[mtype] = 0
+ f.write("%s.columns = {'timestamp'" % mtype)
+ for field in fieldnames:
+ val = getattr(m, field)
+ if not isinstance(val, str):
+ if type(val) is not list:
+ f.write(",'%s'" % field)
+ else:
+ for i in range(0, len(val)):
+ f.write(",'%s%d'" % (field, i + 1))
+ f.write("};\n")
+
+ type_counters[mtype] += 1
+ f.write("%s.data(%u,:) = [%f" % (mtype, type_counters[mtype], m._timestamp))
+ for field in m._fieldnames:
+ val = getattr(m, field)
+ if not isinstance(val, str):
+ if type(val) is not list:
+ f.write(",%.20g" % val)
+ else:
+ for i in range(0, len(val)):
+ f.write(",%.20g" % val[i])
+ f.write("];\n")
+ f.close()
+
+from argparse import ArgumentParser
+parser = ArgumentParser(description=__doc__)
+
+parser.add_argument("--condition", default=None, help="select packets by condition")
+parser.add_argument("-o", "--output", default=None, help="output filename")
+parser.add_argument("--types", default=None, help="types of messages (comma separated)")
+parser.add_argument("--dialect", default="ardupilotmega", help="MAVLink dialect")
+parser.add_argument("logs", metavar="LOG", nargs="+")
+args = parser.parse_args()
+
+
+for filename in args.logs:
+ process_tlog(filename)
diff --git a/src/drivers/MAVLinkServer/tools/MAVExplorer.py b/src/drivers/MAVLinkServer/MAVProxy/tools/MAVExplorer.py
similarity index 76%
rename from src/drivers/MAVLinkServer/tools/MAVExplorer.py
rename to src/drivers/MAVLinkServer/MAVProxy/tools/MAVExplorer.py
index 9d59e8b17..8f417e87b 100755
--- a/src/drivers/MAVLinkServer/tools/MAVExplorer.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/tools/MAVExplorer.py
@@ -24,8 +24,8 @@
from lxml import objectify
import pkg_resources
-#Global var to hold the GUI menu element
-TopMenu = None
+if __name__ == "__main__":
+ multiprocessing.freeze_support()
class MEStatus(object):
'''status object to conform with mavproxy structure for modules'''
@@ -45,7 +45,7 @@ def __init__(self):
MPSetting('condition', str, None, 'condition'),
MPSetting('xaxis', str, None, 'xaxis'),
MPSetting('linestyle', str, None, 'linestyle'),
- MPSetting('show_flightmode', bool, True, 'show flightmode'),
+ MPSetting('flightmode', str, None, 'flightmode', choice=['apm','px4']),
MPSetting('legend', str, 'upper left', 'legend position'),
MPSetting('legend2', str, 'upper right', 'legend2 position')
]
@@ -85,14 +85,6 @@ def menu_callback(m):
elif m.returnkey.startswith("mode-"):
idx = int(m.returnkey[5:])
mestate.flightmode_selections[idx] = m.IsChecked()
- elif m.returnkey.startswith("loadLog"):
- print ("File: " + m.returnkey[8:])
- elif m.returnkey == 'quit':
- mestate.console.close()
- mestate.exit = True
- print ("Exited. Press Enter to continue.")
- sys.exit(0)
-
else:
print('Unknown menu selection: %s' % m.returnkey)
@@ -121,30 +113,18 @@ def graph_menus():
ret.add_to_submenu(path, MPMenuItem(name, name, '# graph :%u' % i))
return ret
-def setup_file_menu():
- global TopMenu
- TopMenu = MPMenuTop([])
- TopMenu.add(MPMenuSubMenu('MAVExplorer',
- items=[MPMenuItem('Settings', 'Settings', 'menuSettings'),
- MPMenuItem('&Open\tCtrl+O', 'Open Log', '# loadLog ',
- handler=MPMenuCallFileDialog(
- flags=('open',),
- title='Logfile Load',
- wildcard='*.tlog;*.log;*.BIN;*.bin')),
- MPMenuItem('&Quit\tCtrl+Q', 'Quit', 'quit')]))
- mestate.console.set_menu(TopMenu, menu_callback)
-
def setup_menus():
'''setup console menus'''
- global TopMenu
- TopMenu.add(MPMenuSubMenu('Display',
- items=[MPMenuItem('Map', 'Map', '# map'),
+ menu = MPMenuTop([])
+ menu.add(MPMenuSubMenu('MAVExplorer',
+ items=[MPMenuItem('Settings', 'Settings', 'menuSettings'),
+ MPMenuItem('Map', 'Map', '# map'),
MPMenuItem('Save Graph', 'Save', '# save'),
MPMenuItem('Reload Graphs', 'Reload', '# reload')]))
- TopMenu.add(graph_menus())
- TopMenu.add(MPMenuSubMenu('FlightMode', items=flightmode_menu()))
+ menu.add(graph_menus())
+ menu.add(MPMenuSubMenu('FlightMode', items=flightmode_menu()))
- mestate.console.set_menu(TopMenu, menu_callback)
+ mestate.console.set_menu(menu, menu_callback)
def expression_ok(expression):
'''return True if an expression is OK with current messages'''
@@ -193,14 +173,9 @@ def load_graphs():
if 'HOME' in os.environ:
for dirname, dirnames, filenames in os.walk(os.path.join(os.environ['HOME'], ".mavproxy")):
for filename in filenames:
+
if filename.lower().endswith('.xml'):
gfiles.append(os.path.join(dirname, filename))
- elif 'LOCALAPPDATA' in os.environ:
- for dirname, dirnames, filenames in os.walk(os.path.join(os.environ['LOCALAPPDATA'], "MAVProxy")):
- for filename in filenames:
- if filename.lower().endswith('.xml'):
- gfiles.append(os.path.join(dirname, filename))
-
for file in gfiles:
if not os.path.exists(file):
continue
@@ -218,18 +193,18 @@ def load_graphs():
mestate.console.writeln("Loaded %s" % f)
mestate.graphs = sorted(mestate.graphs, key=lambda g: g.name)
-def graph_process(fields, mavExpLog, mavExpFlightModeSel, mavExpSettings):
+def graph_process(fields):
'''process for a graph'''
- mavExpLog.reduce_by_flightmodes(mavExpFlightModeSel)
+ mestate.mlog.reduce_by_flightmodes(mestate.flightmode_selections)
mg = grapher.MavGraph()
- mg.set_marker(mavExpSettings.marker)
- mg.set_condition(mavExpSettings.condition)
- mg.set_xaxis(mavExpSettings.xaxis)
- mg.set_linestyle(mavExpSettings.linestyle)
- mg.set_show_flightmode(mavExpSettings.show_flightmode)
- mg.set_legend(mavExpSettings.legend)
- mg.add_mav(mavExpLog)
+ mg.set_marker(mestate.settings.marker)
+ mg.set_condition(mestate.settings.condition)
+ mg.set_xaxis(mestate.settings.xaxis)
+ mg.set_linestyle(mestate.settings.linestyle)
+ mg.set_flightmode(mestate.settings.flightmode)
+ mg.set_legend(mestate.settings.legend)
+ mg.add_mav(mestate.mlog)
for f in fields:
mg.add_field(f)
mg.process()
@@ -238,7 +213,7 @@ def graph_process(fields, mavExpLog, mavExpFlightModeSel, mavExpSettings):
def display_graph(graphdef):
'''display a graph'''
mestate.console.write("Expression: %s\n" % ' '.join(graphdef.expression.split()))
- child = multiprocessing.Process(target=graph_process, args=[graphdef.expression.split(), mestate.mlog, mestate.flightmode_selections, mestate.settings])
+ child = multiprocessing.Process(target=graph_process, args=[graphdef.expression.split()])
child.start()
def cmd_graph(args):
@@ -262,20 +237,20 @@ def cmd_graph(args):
mestate.last_graph = GraphDefinition('Untitled', expression, '', [expression], None)
display_graph(mestate.last_graph)
-def map_process(args, MAVExpLog, MAVExpFlightModes, MAVExpSettings):
+def map_process(args):
'''process for a graph'''
from mavflightview import mavflightview_mav, mavflightview_options
- MAVExpLog.reduce_by_flightmodes(MAVExpFlightModes)
+ mestate.mlog.reduce_by_flightmodes(mestate.flightmode_selections)
options = mavflightview_options()
- options.condition = MAVExpSettings.condition
+ options.condition = mestate.settings.condition
if len(args) > 0:
options.types = ','.join(args)
- mavflightview_mav(MAVExpLog, options)
+ mavflightview_mav(mestate.mlog, options)
def cmd_map(args):
'''map command'''
- child = multiprocessing.Process(target=map_process, args=[args, mestate.mlog, mestate.flightmode_selections, mestate.settings])
+ child = multiprocessing.Process(target=map_process, args=[args])
child.start()
def cmd_set(args):
@@ -298,28 +273,19 @@ def cmd_reload(args):
setup_menus()
mestate.console.write("Loaded %u graphs\n" % len(mestate.graphs))
-def save_graph(graphdef, mestate):
+def save_graph(graphdef):
'''save a graph as XML'''
if graphdef.filename is None:
if 'HOME' in os.environ:
dname = os.path.join(os.environ['HOME'], '.mavproxy')
- if os.path.exists(dname):
- mp_util.mkdir_p(dname)
- graphdef.filename = os.path.join(dname, 'mavgraphs.xml')
- elif 'LOCALAPPDATA' in os.environ:
- dname = os.path.join(os.environ['LOCALAPPDATA'], 'MAVProxy')
- if os.path.exists(dname):
- mp_util.mkdir_p(dname)
- graphdef.filename = os.path.join(dname, 'mavgraphs.xml')
+ mp_util.mkdir_p(dname)
+ graphdef.filename = os.path.join(dname, 'mavgraphs.xml')
else:
graphdef.filename = 'mavgraphs.xml'
if graphdef.filename is None:
mestate.console.writeln("No file to save graph to", fg='red')
return
- try:
- graphs = load_graph_xml(open(graphdef.filename).read(), graphdef.filename, load_all=True)
- except Exception:
- graphs = []
+ graphs = load_graph_xml(open(graphdef.filename).read(), graphdef.filename, load_all=True)
found_name = False
for i in range(len(graphs)):
if graphs[i].name == graphdef.name:
@@ -353,16 +319,16 @@ def save_callback(operation, graphdef):
mestate.console.writeln('Invalid graph expressions', fg='red')
return
if operation == 'save':
- save_graph(graphdef, mestate)
+ save_graph(graphdef)
-def save_process(MAVExpLastGraph):
+def save_process():
'''process for saving a graph'''
from MAVProxy.modules.lib import wx_processguard
from MAVProxy.modules.lib.wx_loader import wx
from MAVProxy.modules.lib.wxgrapheditor import GraphDialog
app = wx.App(False)
frame = GraphDialog('Graph Editor',
- MAVExpLastGraph,
+ mestate.last_graph,
save_callback)
frame.ShowModal()
frame.Destroy()
@@ -370,7 +336,7 @@ def save_process(MAVExpLastGraph):
def cmd_save(args):
'''save a graph'''
- child = multiprocessing.Process(target=save_process, args=[mestate.last_graph])
+ child = multiprocessing.Process(target=save_process)
child.start()
def cmd_param(args):
@@ -383,27 +349,6 @@ def cmd_param(args):
for p in k:
if fnmatch.fnmatch(str(p).upper(), wildcard.upper()):
print("%-16.16s %f" % (str(p), mestate.mlog.params[p]))
-
-def cmd_loadfile(args):
- '''callback from menu to load a log file'''
- if len(args) != 1:
- print ("Error loading file")
- return
- loadfile(args[0])
-
-def loadfile(args):
- '''load a log file (path given by arg)'''
- mestate.console.write("Loading %s...\n" % args)
- t0 = time.time()
- mlog = mavutil.mavlink_connection(args, notimestamps=False,
- zero_time_base=False)
- mestate.mlog = mavmemlog.mavmemlog(mlog, progress_bar)
- mestate.status.msgs = mlog.messages
- t1 = time.time()
- mestate.console.write("\ndone (%u messages in %.1fs)\n" % (mestate.mlog._count, t1-t0))
-
- load_graphs()
- setup_menus()
def process_stdin(line):
'''handle commands from user'''
@@ -467,7 +412,6 @@ def main_loop():
'condition' : (cmd_condition, 'set graph conditions'),
'param' : (cmd_param, 'show parameters'),
'map' : (cmd_map, 'show map view'),
- 'loadLog' : (cmd_loadfile, 'load a log file'),
}
def progress_bar(pct):
@@ -475,20 +419,29 @@ def progress_bar(pct):
mestate.console.write('#')
if __name__ == "__main__":
- multiprocessing.freeze_support()
mestate = MEState()
- setup_file_menu()
-
mestate.rl = rline.rline("MAV> ", mestate)
-
+
from argparse import ArgumentParser
parser = ArgumentParser(description=__doc__)
- parser.add_argument("files", metavar="", nargs="?")
- args = parser.parse_args()
+ parser.add_argument("files", metavar="", nargs="+")
+ args = parser.parse_args()
- #If specified, open the log file
- if args.files != None and len(args.files) != 0:
- loadfile(args.files)
+ if len(args.files) == 0:
+ print("Usage: MAVExplorer FILE")
+ sys.exit(1)
+
+ mestate.console.write("Loading %s...\n" % args.files[0])
+ t0 = time.time()
+ mlog = mavutil.mavlink_connection(args.files[0], notimestamps=False,
+ zero_time_base=False)
+ mestate.mlog = mavmemlog.mavmemlog(mlog, progress_bar)
+ mestate.status.msgs = mlog.messages
+ t1 = time.time()
+ mestate.console.write("\ndone (%u messages in %.1fs)\n" % (mestate.mlog._count, t1-t0))
+
+ load_graphs()
+ setup_menus()
# run main loop as a thread
mestate.thread = threading.Thread(target=main_loop, name='main_loop')
@@ -496,9 +449,9 @@ def progress_bar(pct):
mestate.thread.start()
# input loop
- while mestate.rl != None and mestate.exit != True:
+ while True:
try:
- try:
+ try:
line = raw_input(mestate.rl.prompt)
except EOFError:
mestate.exit = True
@@ -507,4 +460,3 @@ def progress_bar(pct):
except KeyboardInterrupt:
mestate.exit = True
break
-
diff --git a/src/drivers/MAVLinkServer/tools/graphs/ekfGraphs.xml b/src/drivers/MAVLinkServer/MAVProxy/tools/graphs/ekfGraphs.xml
similarity index 100%
rename from src/drivers/MAVLinkServer/tools/graphs/ekfGraphs.xml
rename to src/drivers/MAVLinkServer/MAVProxy/tools/graphs/ekfGraphs.xml
diff --git a/src/drivers/MAVLinkServer/tools/graphs/mavgraphs.xml b/src/drivers/MAVLinkServer/MAVProxy/tools/graphs/mavgraphs.xml
similarity index 100%
rename from src/drivers/MAVLinkServer/tools/graphs/mavgraphs.xml
rename to src/drivers/MAVLinkServer/MAVProxy/tools/graphs/mavgraphs.xml
diff --git a/src/drivers/MAVLinkServer/tools/mavflightview.py b/src/drivers/MAVLinkServer/MAVProxy/tools/mavflightview.py
similarity index 81%
rename from src/drivers/MAVLinkServer/tools/mavflightview.py
rename to src/drivers/MAVLinkServer/MAVProxy/tools/mavflightview.py
index f685e0be9..8d729aefe 100755
--- a/src/drivers/MAVLinkServer/tools/mavflightview.py
+++ b/src/drivers/MAVLinkServer/MAVProxy/tools/mavflightview.py
@@ -86,78 +86,6 @@ def display_waypoints(wploader, map):
'miss_cmd %u/%u' % (i,j), polygons[i][j], str(next_list[j]), 'Mission', colour=(0,255,255)))
labeled_wps[next_list[j]] = (i,j)
-colour_expression_exceptions = dict()
-colour_source_min = 255
-colour_source_max = 0
-
-def colour_for_point(mlog, point, instance, options):
- global colour_expression_exceptions, colour_source_max, colour_source_min
- '''indicate a colour to be used to plot point'''
- source = getattr(options, "colour_source", "flightmode")
- if source == "flightmode":
- return colour_for_point_flightmode(mlog, point, instance, options)
-
- # evaluate source as an expression which should return a
- # number in the range 0..255
- try:
- v = eval(source, globals(),mlog.messages)
- except Exception as e:
- str_e = str(e)
- try:
- count = colour_expression_exceptions[str_e]
- except KeyError:
- colour_expression_exceptions[str_e] = 0
- count = 0
- if count > 100:
- print("Too many exceptions processing (%s): %s" % (source, str_e))
- sys.exit(1)
- colour_expression_exceptions[str_e] += 1
- v = 0
-
- # we don't use evaluate_expression as we want the exceptions...
-# v = mavutil.evaluate_expression(source, mlog.messages)
-
- if v is None:
- v = 0
- elif isinstance(v, str):
- print("colour expression returned a string: %s" % v)
- sys.exit(1)
- elif v < 0:
- print("colour expression returned %d (< 0)" % v)
- v = 0
- elif v > 255:
- print("colour expression returned %d (> 255)" % v)
- v = 255
-
- if v < colour_source_min:
- colour_source_min = v
- if v > colour_source_max:
- colour_source_max = v
-
- r = 255
- g = 255
- b = v
- return (b,b,b)
-
-def colour_for_point_flightmode(mlog, point, instance, options):
- fmode = getattr(mlog, 'flightmode','')
- if fmode in colourmap:
- colour = colourmap[fmode]
- else:
- colour = colourmap['UNKNOWN']
- (r,g,b) = colour
- (r,g,b) = (r+instance*80,g+instance*50,b+instance*70)
- if r > 255:
- r = 205
- if g > 255:
- g = 205
- if g < 0:
- g = 0
- if b > 255:
- b = 205
- colour = (r,g,b)
- return colour
-
def mavflightview_mav(mlog, options=None, title=None):
'''create a map for a log file'''
if not title:
@@ -171,7 +99,6 @@ def mavflightview_mav(mlog, options=None, title=None):
path = [[]]
instances = {}
ekf_counter = 0
- nkf_counter = 0
types = ['MISSION_ITEM','CMD']
if options.types is not None:
types.extend(options.types.split(','))
@@ -183,8 +110,6 @@ def mavflightview_mav(mlog, options=None, title=None):
types.extend(['GPS2_RAW','GPS2'])
if options.ekf:
types.extend(['EKF1', 'GPS'])
- if options.nkf:
- types.extend(['NKF1', 'GPS'])
if options.ahr2:
types.extend(['AHR2', 'AHRS2', 'GPS'])
print("Looking for types %s" % str(types))
@@ -258,14 +183,6 @@ def mavflightview_mav(mlog, options=None, title=None):
if ekf_counter % options.ekf_sample != 0:
continue
(lat, lng) = pos
- elif type in ['NKF1']:
- pos = mavextra.ekf1_pos(m)
- if pos is None:
- continue
- nkf_counter += 1
- if nkf_counter % options.nkf_sample != 0:
- continue
- (lat, lng) = pos
elif type in ['ANU5']:
(lat, lng) = (m.Alat*1.0e-7, m.Alng*1.0e-7)
elif type in ['AHR2', 'POS', 'CHEK']:
@@ -284,7 +201,22 @@ def mavflightview_mav(mlog, options=None, title=None):
instance = instances[type]
if abs(lat)>0.01 or abs(lng)>0.01:
- colour = colour_for_point(mlog, (lat, lng), instance, options)
+ fmode = getattr(mlog, 'flightmode','')
+ if fmode in colourmap:
+ colour = colourmap[fmode]
+ else:
+ colour = colourmap['UNKNOWN']
+ (r,g,b) = colour
+ (r,g,b) = (r+instance*80,g+instance*50,b+instance*70)
+ if r > 255:
+ r = 205
+ if g > 255:
+ g = 205
+ if g < 0:
+ g = 0
+ if b > 255:
+ b = 205
+ colour = (r,g,b)
point = (lat, lng, colour)
if options.rate == 0 or not type in last_timestamps or m._timestamp - last_timestamps[type] > 1.0/options.rate:
@@ -357,10 +289,6 @@ def mavflightview_mav(mlog, options=None, title=None):
icon = map.icon(icon)
map.add_object(mp_slipmap.SlipIcon('icon - %s' % str(flag), (float(lat),float(lon)), icon, layer=3, rotation=0, follow=False))
- source = getattr(options, "colour_source", "flightmode")
- if source != "flightmode":
- print("colour-source: min=%f max=%f" % (colour_source_min, colour_source_max))
-
def mavflightview(filename, options):
print("Loading %s ..." % filename)
mlog = mavutil.mavlink_connection(filename)
@@ -379,7 +307,6 @@ def __init__(self):
self.rawgps2 = False
self.dualgps = False
self.ekf = False
- self.nkf = False
self.ahr2 = False
self.debug = False
self.multi = False
@@ -401,15 +328,12 @@ def __init__(self):
parser.add_option("--rawgps2", action='store_true', default=False, help="use GPS2_RAW")
parser.add_option("--dualgps", action='store_true', default=False, help="use GPS_RAW_INT and GPS2_RAW")
parser.add_option("--ekf", action='store_true', default=False, help="use EKF1 pos")
- parser.add_option("--nkf", action='store_true', default=False, help="use NKF1 pos")
parser.add_option("--ahr2", action='store_true', default=False, help="use AHR2 pos")
parser.add_option("--debug", action='store_true', default=False, help="show debug info")
parser.add_option("--multi", action='store_true', default=False, help="show multiple flights on one map")
parser.add_option("--types", default=None, help="types of position messages to show")
parser.add_option("--ekf-sample", type='int', default=1, help="sub-sampling of EKF messages")
- parser.add_option("--nkf-sample", type='int', default=1, help="sub-sampling of NKF messages")
parser.add_option("--rate", type='int', default=0, help="maximum message rate to display (0 means all points)")
- parser.add_option("--colour-source", type="str", default="flightmode", help="expression with range 0f..255f used for point colour")
(opts, args) = parser.parse_args()
diff --git a/src/drivers/MAVLinkServer/MAVProxy/uav_viewer.cfg b/src/drivers/MAVLinkServer/MAVProxy/uav_viewer.cfg
new file mode 100644
index 000000000..a78c3ba5d
--- /dev/null
+++ b/src/drivers/MAVLinkServer/MAVProxy/uav_viewer.cfg
@@ -0,0 +1,11 @@
+UAVViewer.Camera.Proxy=Camera:default -h 10.1.1.191 -p 9999
+UAVViewer.Pose3D.Proxy=Pose3D:default -h 10.1.1.191 -p 9998
+UAVViewer.CMDVel.Proxy=CMDVel:default -h 10.1.1.191 -p 9997
+UAVViewer.Navdata.Proxy=Navdata:default -h 10.1.1.191 -p 9996
+UAVViewer.Extra.Proxy=Extra:default -h 10.1.1.191 -p 9995
+
+#UAVViewer.Camera.Proxy=Camera:default -h 0.0.0.0 -p 9999
+#UAVViewer.Pose3D.Proxy=Pose3D:default -h 0.0.0.0 -p 9998
+#UAVViewer.CMDVel.Proxy=CMDVel:default -h 0.0.0.0 -p 9997
+#UAVViewer.Navdata.Proxy=Navdata:default -h 0.0.0.0 -p 9996
+#UAVViewer.Extra.Proxy=Extra:default -h 0.0.0.0 -p 9995
diff --git a/src/drivers/MAVLinkServer/MAVProxyWinLAN.bat b/src/drivers/MAVLinkServer/MAVProxyWinLAN.bat
deleted file mode 100644
index f5bd02133..000000000
--- a/src/drivers/MAVLinkServer/MAVProxyWinLAN.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-cd ..\
-python setup.py build install --user
-python .\MAVProxy\mavproxy.py --master=192.168.1.6:14550 --console
-pause
diff --git a/src/drivers/MAVLinkServer/MAVProxyWinUSB.bat b/src/drivers/MAVLinkServer/MAVProxyWinUSB.bat
deleted file mode 100644
index 44b18cbf5..000000000
--- a/src/drivers/MAVLinkServer/MAVProxyWinUSB.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-cd ..\
-python setup.py build install --user
-python .\MAVProxy\mavproxy.py --console
-pause
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/Pose3Dclient.py b/src/drivers/MAVLinkServer/Pose3Dclient.py
deleted file mode 100644
index 8b33b784b..000000000
--- a/src/drivers/MAVLinkServer/Pose3Dclient.py
+++ /dev/null
@@ -1,32 +0,0 @@
-__author__ = 'robotica'
-
-import sys, traceback, Ice
-import jderobot, time
-
-status = 0
-ic = None
-try:
- ic = Ice.initialize(sys.argv)
- base = ic.stringToProxy("PHPose3D:default -p 9998")
- datos = jderobot.Pose3DPrx.checkedCast(base)
- print (datos)
- if not datos:
- raise RuntimeError("Invalid proxy")
-
- while True:
- time.sleep(1)
- data = datos.getPose3DData()
- print (data)
-except:
- traceback.print_exc()
- status = 1
-
-if ic:
- # Clean up
- try:
- ic.destroy()
- except:
- traceback.print_exc()
- status = 1
-
-sys.exit(status)
diff --git a/src/drivers/MAVLinkServer/README.md b/src/drivers/MAVLinkServer/README.md
new file mode 100644
index 000000000..c529068ff
--- /dev/null
+++ b/src/drivers/MAVLinkServer/README.md
@@ -0,0 +1,7 @@
+Example of execution:
+
+In the first run, MAVProxyWinLAN.sh script must be launched in MavProxy folder.
+
+In the following executions you must launch:
+
+python3.5 mavproxy.py --master=0.0.0.0:14550 (ipDrone)
diff --git a/src/drivers/MAVLinkServer/camera1.cfg b/src/drivers/MAVLinkServer/camera1.cfg
deleted file mode 100644
index 4e91020b8..000000000
--- a/src/drivers/MAVLinkServer/camera1.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-##without registry
-CameraSrv.Endpoints=default -h localhost -p 9997
-
-# client/server mode
-CameraSrv.DefaultMode=1
-
-#cameras configuration
-CameraSrv.NCameras=1
-
-#camera 0
-CameraSrv.Camera.0.Name=Camera
-CameraSrv.Camera.0.ShortDescription=Camera pluged to videotest://0
-CameraSrv.Camera.0.Uri=0
-CameraSrv.Camera.0.FramerateN=15
-CameraSrv.Camera.0.FramerateD=1
-CameraSrv.Camera.0.ImageWidth=320
-CameraSrv.Camera.0.ImageHeight=240
-CameraSrv.Camera.0.Invert=False
diff --git a/src/drivers/MAVLinkServer/camera2.cfg b/src/drivers/MAVLinkServer/camera2.cfg
deleted file mode 100644
index 3cf35d7a3..000000000
--- a/src/drivers/MAVLinkServer/camera2.cfg
+++ /dev/null
@@ -1,29 +0,0 @@
-##without registry
-CameraSrv.Endpoints=default -h localhost -p 9997
-
-# client/server mode
-CameraSrv.DefaultMode=1
-
-#cameras configuration
-CameraSrv.NCameras=2
-
-#camera 0
-CameraSrv.Camera.0.Name=cameraA
-CameraSrv.Camera.0.ShortDescription=Camera pluged to videotest://0
-CameraSrv.Camera.0.Uri=0
-CameraSrv.Camera.0.FramerateN=15
-CameraSrv.Camera.0.FramerateD=1
-CameraSrv.Camera.0.ImageWidth=320
-CameraSrv.Camera.0.ImageHeight=240
-CameraSrv.Camera.0.Invert=False
-
-#camera 1
-CameraSrv.Camera.1.Name=Camera
-CameraSrv.Camera.1.ShortDescription=Camera pluged to videotest://1
-CameraSrv.Camera.1.Uri=1
-CameraSrv.Camera.1.FramerateN=15
-CameraSrv.Camera.1.FramerateD=1
-CameraSrv.Camera.1.ImageWidth=512
-CameraSrv.Camera.1.ImageHeight=384
-CameraSrv.Camera.1.Format=RGB8
-CameraSrv.Camera.1.Invert=False
\ No newline at end of file
diff --git a/src/drivers/MAVLinkServer/make b/src/drivers/MAVLinkServer/make
new file mode 100755
index 000000000..871f99295
--- /dev/null
+++ b/src/drivers/MAVLinkServer/make
@@ -0,0 +1,5 @@
+#!/bin/sh
+dir=$(dirname "$0")
+cd $dir
+python setup.py build
+python setup.py install --user
diff --git a/src/drivers/MAVLinkServer/mav.parm b/src/drivers/MAVLinkServer/mav.parm
deleted file mode 100644
index ec4674e45..000000000
--- a/src/drivers/MAVLinkServer/mav.parm
+++ /dev/null
@@ -1,417 +0,0 @@
-ACRO_BAL_PITCH 1.000000
-ACRO_BAL_ROLL 1.000000
-ACRO_EXPO 0.300000
-ACRO_RP_P 4.500000
-ACRO_TRAINER 2.000000
-ACRO_YAW_P 4.500000
-AHRS_COMP_BETA 0.100000
-AHRS_EKF_USE 0.000000
-AHRS_GPS_GAIN 1.000000
-AHRS_GPS_MINSATS 6.000000
-AHRS_GPS_USE 1.000000
-AHRS_ORIENTATION 0.000000
-AHRS_RP_P 0.100000
-AHRS_TRIM_X -0.008823
-AHRS_TRIM_Y 0.002490
-AHRS_TRIM_Z 0.000000
-AHRS_WIND_MAX 0.000000
-AHRS_YAW_P 0.100000
-ANGLE_MAX 4500.000000
-ARMING_CHECK 1.000000
-ATC_ACCEL_RP_MAX 0.000000
-ATC_ACCEL_Y_MAX 0.000000
-ATC_RATE_FF_ENAB 0.000000
-ATC_RATE_RP_MAX 18000.000000
-ATC_RATE_Y_MAX 9000.000000
-ATC_SLEW_YAW 1000.000000
-BAROGLTCH_ACCEL 1500.000000
-BAROGLTCH_DIST 500.000000
-BAROGLTCH_ENABLE 1.000000
-BATT_AMP_OFFSET 0.000000
-BATT_AMP_PERVOLT 22.571888
-BATT_CAPACITY 5800.000000
-BATT_CURR_PIN 3.000000
-BATT_MONITOR 4.000000
-BATT_VOLT2_MULT 1.000000
-BATT_VOLT2_PIN -1.000000
-BATT_VOLT_MULT 12.011103
-BATT_VOLT_PIN 2.000000
-BRD_PWM_COUNT 4.000000
-BRD_SAFETYENABLE 1.000000
-BRD_SER1_RTSCTS 2.000000
-BRD_SER2_RTSCTS 2.000000
-CAM_DURATION 10.000000
-CAM_SERVO_OFF 1100.000000
-CAM_SERVO_ON 1300.000000
-CAM_TRIGG_DIST 0.000000
-CAM_TRIGG_TYPE 0.000000
-CH7_OPT 0.000000
-CH8_OPT 0.000000
-CHUTE_ALT_MIN 10.000000
-CHUTE_ENABLED 0.000000
-CHUTE_SERVO_OFF 1100.000000
-CHUTE_SERVO_ON 1300.000000
-CHUTE_TYPE 0.000000
-CIRCLE_RADIUS 1000.000000
-CIRCLE_RATE 20.000000
-COMPASS_AUTODEC 1.000000
-COMPASS_DEC 0.000000
-COMPASS_DEV_ID 73225.000000
-COMPASS_DEV_ID2 131594.000000
-COMPASS_DEV_ID3 0.000000
-COMPASS_EXTERNAL 1.000000
-COMPASS_LEARN 0.000000
-COMPASS_MOT2_X 0.000000
-COMPASS_MOT2_Y 0.000000
-COMPASS_MOT2_Z 0.000000
-COMPASS_MOT3_X 0.000000
-COMPASS_MOT3_Y 0.000000
-COMPASS_MOT3_Z 0.000000
-COMPASS_MOTCT 0.000000
-COMPASS_MOT_X 0.000000
-COMPASS_MOT_Y 0.000000
-COMPASS_MOT_Z 0.000000
-COMPASS_OFS2_X 247.000000
-COMPASS_OFS2_Y -163.000000
-COMPASS_OFS2_Z -558.000000
-COMPASS_OFS3_X 0.000000
-COMPASS_OFS3_Y 0.000000
-COMPASS_OFS3_Z 0.000000
-COMPASS_OFS_X -94.000000
-COMPASS_OFS_Y -8.000000
-COMPASS_OFS_Z 14.000000
-COMPASS_ORIENT 0.000000
-COMPASS_PRIMARY 0.000000
-COMPASS_USE 1.000000
-DCM_CHECK_THRESH 0.800000
-EKF_ABIAS_PNOISE 0.000100
-EKF_ACC_PNOISE 0.250000
-EKF_ALT_NOISE 1.000000
-EKF_CHECK_THRESH 0.800000
-EKF_EAS_GATE 10.000000
-EKF_EAS_NOISE 1.400000
-EKF_GBIAS_PNOISE 0.000001
-EKF_GLITCH_ACCEL 150.000000
-EKF_GLITCH_RAD 15.000000
-EKF_GPS_TYPE 0.000000
-EKF_GYRO_PNOISE 0.015000
-EKF_HGT_GATE 10.000000
-EKF_MAGB_PNOISE 0.000300
-EKF_MAGE_PNOISE 0.000300
-EKF_MAG_CAL 1.000000
-EKF_MAG_GATE 3.000000
-EKF_MAG_NOISE 0.050000
-EKF_POSNE_NOISE 0.500000
-EKF_POS_DELAY 220.000000
-EKF_POS_GATE 10.000000
-EKF_VELD_NOISE 0.700000
-EKF_VELNE_NOISE 0.500000
-EKF_VEL_DELAY 220.000000
-EKF_VEL_GATE 6.000000
-EKF_WIND_PNOISE 0.100000
-EKF_WIND_PSCALE 0.500000
-ESC 0.000000
-FENCE_ACTION 1.000000
-FENCE_ALT_MAX 100.000000
-FENCE_ENABLE 0.000000
-FENCE_MARGIN 2.000000
-FENCE_RADIUS 300.000000
-FENCE_TYPE 3.000000
-FLOW_ENABLE 0.000000
-FLTMODE1 0.000000
-FLTMODE2 5.000000
-FLTMODE3 6.000000
-FLTMODE4 4.000000
-FLTMODE5 9.000000
-FLTMODE6 2.000000
-FRAME 1.000000
-FS_BATT_ENABLE 1.000000
-FS_BATT_MAH 0.000000
-FS_BATT_VOLTAGE 10.200000
-FS_GCS_ENABLE 1.000000
-FS_GPS_ENABLE 1.000000
-FS_THR_ENABLE 0.000000
-FS_THR_VALUE 975.000000
-GND_ABS_PRESS 94109.234375
-GND_ALT_OFFSET 0.000000
-GND_TEMP 45.251881
-GPSGLITCH_ACCEL 1000.000000
-GPSGLITCH_ENABLE 1.000000
-GPSGLITCH_RADIUS 200.000000
-GPS_AUTO_SWITCH 1.000000
-GPS_HDOP_GOOD 230.000000
-GPS_MIN_DGPS 100.000000
-GPS_NAVFILTER 8.000000
-GPS_TYPE 1.000000
-GPS_TYPE2 0.000000
-HLD_LAT_P 1.000000
-INAV_TC_XY 2.500000
-INAV_TC_Z 5.000000
-INS_ACC2OFFS_X 1.104549
-INS_ACC2OFFS_Y 1.428226
-INS_ACC2OFFS_Z 1.123360
-INS_ACC2SCAL_X 0.991748
-INS_ACC2SCAL_Y 1.032075
-INS_ACC2SCAL_Z 1.006577
-INS_ACC3OFFS_X 0.000000
-INS_ACC3OFFS_Y 0.000000
-INS_ACC3OFFS_Z 0.000000
-INS_ACC3SCAL_X 0.000000
-INS_ACC3SCAL_Y 0.000000
-INS_ACC3SCAL_Z 0.000000
-INS_ACCOFFS_X -0.127893
-INS_ACCOFFS_Y -0.181060
-INS_ACCOFFS_Z -1.009232
-INS_ACCSCAL_X 0.993174
-INS_ACCSCAL_Y 0.994115
-INS_ACCSCAL_Z 0.995717
-INS_GYR2OFFS_X 0.004556
-INS_GYR2OFFS_Y 0.032886
-INS_GYR2OFFS_Z -0.045840
-INS_GYR3OFFS_X 0.000000
-INS_GYR3OFFS_Y 0.000000
-INS_GYR3OFFS_Z 0.000000
-INS_GYROFFS_X -0.046201
-INS_GYROFFS_Y 0.047294
-INS_GYROFFS_Z -0.254825
-INS_MPU6K_FILTER 0.000000
-INS_PRODUCT_ID 0.000000
-LAND_REPOSITION 1.000000
-LAND_SPEED 50.000000
-LOG_BITMASK 43006.000000
-LOITER_LAT_D 0.000000
-LOITER_LAT_I 0.500000
-LOITER_LAT_IMAX 1000.000000
-LOITER_LAT_P 1.000000
-LOITER_LON_D 0.000000
-LOITER_LON_I 0.500000
-LOITER_LON_IMAX 1000.000000
-LOITER_LON_P 1.000000
-MAG_ENABLE 1.000000
-MIS_RESTART 0.000000
-MIS_TOTAL 0.000000
-MNT_ANGMAX_PAN 4500.000000
-MNT_ANGMAX_ROL 4500.000000
-MNT_ANGMAX_TIL 4500.000000
-MNT_ANGMIN_PAN -4500.000000
-MNT_ANGMIN_ROL -4500.000000
-MNT_ANGMIN_TIL -4500.000000
-MNT_CONTROL_X 0.000000
-MNT_CONTROL_Y 0.000000
-MNT_CONTROL_Z 0.000000
-MNT_JSTICK_SPD 0.000000
-MNT_MODE 0.000000
-MNT_NEUTRAL_X 0.000000
-MNT_NEUTRAL_Y 0.000000
-MNT_NEUTRAL_Z 0.000000
-MNT_RC_IN_PAN 0.000000
-MNT_RC_IN_ROLL 0.000000
-MNT_RC_IN_TILT 0.000000
-MNT_RETRACT_X 0.000000
-MNT_RETRACT_Y 0.000000
-MNT_RETRACT_Z 0.000000
-MNT_STAB_PAN 0.000000
-MNT_STAB_ROLL 0.000000
-MNT_STAB_TILT 0.000000
-MOT_SPIN_ARMED 70.000000
-MOT_TCRV_ENABLE 1.000000
-MOT_TCRV_MAXPCT 93.000000
-MOT_TCRV_MIDPCT 52.000000
-OF_PIT_D 0.120000
-OF_PIT_I 0.500000
-OF_PIT_IMAX 100.000000
-OF_PIT_P 2.500000
-OF_RLL_D 0.120000
-OF_RLL_I 0.500000
-OF_RLL_IMAX 100.000000
-OF_RLL_P 2.500000
-PHLD_BRAKE_ANGLE 3000.000000
-PHLD_BRAKE_RATE 8.000000
-PILOT_ACCEL_Z 250.000000
-PILOT_VELZ_MAX 250.000000
-POSCON_THR_HOVER 996.000000
-RALLY_LIMIT_KM 0.300000
-RALLY_TOTAL 0.000000
-RATE_PIT_D 0.004000
-RATE_PIT_I 0.100000
-RATE_PIT_IMAX 1000.000000
-RATE_PIT_P 0.150000
-RATE_RLL_D 0.004000
-RATE_RLL_I 0.100000
-RATE_RLL_IMAX 1000.000000
-RATE_RLL_P 0.150000
-RATE_YAW_D 0.000000
-RATE_YAW_I 0.020000
-RATE_YAW_IMAX 1000.000000
-RATE_YAW_P 0.200000
-RC10_DZ 0.000000
-RC10_FUNCTION 0.000000
-RC10_MAX 1900.000000
-RC10_MIN 1100.000000
-RC10_REV 1.000000
-RC10_TRIM 1500.000000
-RC11_DZ 0.000000
-RC11_FUNCTION 0.000000
-RC11_MAX 1900.000000
-RC11_MIN 1100.000000
-RC11_REV 1.000000
-RC11_TRIM 1500.000000
-RC12_DZ 0.000000
-RC12_FUNCTION 0.000000
-RC12_MAX 1900.000000
-RC12_MIN 1100.000000
-RC12_REV 1.000000
-RC12_TRIM 1500.000000
-RC13_DZ 0.000000
-RC13_FUNCTION 0.000000
-RC13_MAX 1900.000000
-RC13_MIN 1100.000000
-RC13_REV 1.000000
-RC13_TRIM 1500.000000
-RC14_DZ 0.000000
-RC14_FUNCTION 0.000000
-RC14_MAX 1900.000000
-RC14_MIN 1100.000000
-RC14_REV 1.000000
-RC14_TRIM 1500.000000
-RC1_DZ 30.000000
-RC1_MAX 2004.000000
-RC1_MIN 982.000000
-RC1_REV 1.000000
-RC1_TRIM 1492.000000
-RC2_DZ 30.000000
-RC2_MAX 2006.000000
-RC2_MIN 982.000000
-RC2_REV 1.000000
-RC2_TRIM 1494.000000
-RC3_DZ 30.000000
-RC3_MAX 2006.000000
-RC3_MIN 982.000000
-RC3_REV 1.000000
-RC3_TRIM 982.000000
-RC4_DZ 40.000000
-RC4_MAX 2006.000000
-RC4_MIN 982.000000
-RC4_REV 1.000000
-RC4_TRIM 1492.000000
-RC5_DZ 0.000000
-RC5_FUNCTION 0.000000
-RC5_MAX 1500.000000
-RC5_MIN 1494.000000
-RC5_REV 1.000000
-RC5_TRIM 1494.000000
-RC6_DZ 0.000000
-RC6_FUNCTION 0.000000
-RC6_MAX 1500.000000
-RC6_MIN 1494.000000
-RC6_REV 1.000000
-RC6_TRIM 1494.000000
-RC7_DZ 0.000000
-RC7_FUNCTION 0.000000
-RC7_MAX 1500.000000
-RC7_MIN 1494.000000
-RC7_REV 1.000000
-RC7_TRIM 1494.000000
-RC8_DZ 0.000000
-RC8_FUNCTION 0.000000
-RC8_MAX 1500.000000
-RC8_MIN 1494.000000
-RC8_REV 1.000000
-RC8_TRIM 1494.000000
-RC9_DZ 0.000000
-RC9_FUNCTION 0.000000
-RC9_MAX 1900.000000
-RC9_MIN 1100.000000
-RC9_REV 1.000000
-RC9_TRIM 1500.000000
-RCMAP_PITCH 2.000000
-RCMAP_ROLL 1.000000
-RCMAP_THROTTLE 3.000000
-RCMAP_YAW 4.000000
-RC_FEEL_RP 100.000000
-RC_SPEED 490.000000
-RELAY_PIN 54.000000
-RELAY_PIN2 -1.000000
-RNGFND_FUNCTION 0.000000
-RNGFND_GAIN 0.800000
-RNGFND_MAX_CM 700.000000
-RNGFND_MIN_CM 20.000000
-RNGFND_OFFSET 0.000000
-RNGFND_PIN -1.000000
-RNGFND_RMETRIC 1.000000
-RNGFND_SCALING 3.000000
-RNGFND_SETTLE_MS 0.000000
-RNGFND_STOP_PIN -1.000000
-RNGFND_TYPE 0.000000
-RSSI_PIN -1.000000
-RSSI_RANGE 5.000000
-RTL_ALT 1500.000000
-RTL_ALT_FINAL 0.000000
-RTL_LOIT_TIME 5000.000000
-SCHED_DEBUG 0.000000
-SERIAL0_BAUD 115.000000
-SERIAL1_BAUD 57.000000
-SERIAL2_BAUD 57.000000
-SERIAL2_PROTOCOL 1.000000
-SIMPLE 0.000000
-SR0_EXTRA1 4.000000
-SR0_EXTRA2 4.000000
-SR0_EXTRA3 4.000000
-SR0_EXT_STAT 4.000000
-SR0_PARAMS 10.000000
-SR0_POSITION 4.000000
-SR0_RAW_CTRL 4.000000
-SR0_RAW_SENS 4.000000
-SR0_RC_CHAN 4.000000
-SR1_EXTRA1 2.000000
-SR1_EXTRA2 2.000000
-SR1_EXTRA3 2.000000
-SR1_EXT_STAT 2.000000
-SR1_PARAMS 0.000000
-SR1_POSITION 2.000000
-SR1_RAW_CTRL 2.000000
-SR1_RAW_SENS 2.000000
-SR1_RC_CHAN 2.000000
-SR2_EXTRA1 0.000000
-SR2_EXTRA2 0.000000
-SR2_EXTRA3 0.000000
-SR2_EXT_STAT 0.000000
-SR2_PARAMS 0.000000
-SR2_POSITION 0.000000
-SR2_RAW_CTRL 0.000000
-SR2_RAW_SENS 0.000000
-SR2_RC_CHAN 0.000000
-STB_PIT_P 4.500000
-STB_RLL_P 4.500000
-STB_YAW_P 4.500000
-SUPER_SIMPLE 0.000000
-SYSID_MYGCS 255.000000
-SYSID_SW_MREV 120.000000
-SYSID_SW_TYPE 10.000000
-SYSID_THISMAV 1.000000
-TELEM_DELAY 0.000000
-TERRAIN_ENABLE 1.000000
-TERRAIN_SPACING 100.000000
-THR_ACCEL_D 0.000000
-THR_ACCEL_I 1.000000
-THR_ACCEL_IMAX 800.000000
-THR_ACCEL_P 0.500000
-THR_ALT_P 1.000000
-THR_DZ 100.000000
-THR_MAX 1000.000000
-THR_MID 500.000000
-THR_MIN 130.000000
-THR_RATE_P 5.000000
-TRIM_THROTTLE 996.000000
-TUNE 0.000000
-TUNE_HIGH 1000.000000
-TUNE_LOW 0.000000
-WPNAV_ACCEL 100.000000
-WPNAV_ACCEL_Z 100.000000
-WPNAV_LOIT_JERK 1000.000000
-WPNAV_LOIT_SPEED 500.000000
-WPNAV_RADIUS 200.000000
-WPNAV_SPEED 500.000000
-WPNAV_SPEED_DN 100.000000
-WPNAV_SPEED_UP 250.000000
-WP_YAW_BEHAVIOR 2.000000
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_adsb.py b/src/drivers/MAVLinkServer/modules/mavproxy_adsb.py
deleted file mode 100644
index 40df94518..000000000
--- a/src/drivers/MAVLinkServer/modules/mavproxy_adsb.py
+++ /dev/null
@@ -1,221 +0,0 @@
-'''
-Support for ADS-B data
-Samuel Dudley
-Dec 2015
-'''
-
-import time
-from math import *
-
-from MAVProxy.modules.lib import mp_module
-from MAVProxy.modules.mavproxy_map import mp_slipmap
-from MAVProxy.modules.lib import mp_settings
-from MAVProxy.modules.lib.mp_menu import * # popup menus
-from pymavlink import mavutil
-
-
-class ADSBVehicle(object):
- '''a generic ADS-B threat'''
-
- def __init__(self, id, state):
- self.id = id
- self.state = state
- self.vehicle_colour = 'green' # use plane icon for now
- self.vehicle_type = 'plane'
- self.icon = self.vehicle_colour + self.vehicle_type + '.png'
- self.update_time = time.time()
- self.is_evading_threat = False
- self.v_distance = None
- self.h_distance = None
- self.distance = None
-
- def update(self, state):
- '''update the threat state'''
- self.state = state
- self.update_time = time.time()
-
-
-class ADSBModule(mp_module.MPModule):
-
- def __init__(self, mpstate):
- super(ADSBModule, self).__init__(mpstate, "adsb", "ADS-B data support")
- self.threat_vehicles = {}
- self.active_threat_ids = [] # holds all threat ids the vehicle is evading
-
- self.add_command('adsb', self.cmd_ADSB, ["adsb control",
- "",
- "set (ADSBSETTING)"])
-
- self.ADSB_settings = mp_settings.MPSettings([("timeout", int, 10), # seconds
- ("threat_radius", int, 200), # meters
- ("show_threat_radius", bool, False),
- # threat_radius_clear = threat_radius*threat_radius_clear_multiplier
- ("threat_radius_clear_multiplier", int, 2),
- ("show_threat_radius_clear", bool, False)])
- self.threat_detection_timer = mavutil.periodic_event(2)
- self.threat_timeout_timer = mavutil.periodic_event(2)
-
- def cmd_ADSB(self, args):
- '''adsb command parser'''
- usage = "usage: adsb "
- if len(args) == 0:
- print(usage)
- return
- if args[0] == "status":
- print("total threat count: %u active threat count: %u" %
- (len(self.threat_vehicles), len(self.active_threat_ids)))
-
- for id in self.threat_vehicles.keys():
- print("id: %s distance: %.2f m callsign: %s alt: %.2f" % (id,
- self.threat_vehicles[id].distance,
- self.threat_vehicles[id].state['callsign'],
- self.threat_vehicles[id].state['altitude']))
- elif args[0] == "set":
- self.ADSB_settings.command(args[1:])
- else:
- print(usage)
-
- def perform_threat_detection(self):
- '''determine threats'''
- # TODO: perform more advanced threat detection
- threat_radius_clear = self.ADSB_settings.threat_radius * \
- self.ADSB_settings.threat_radius_clear_multiplier
-
- for id in self.threat_vehicles.keys():
- if self.threat_vehicles[id].distance is not None:
- if self.threat_vehicles[id].distance <= self.ADSB_settings.threat_radius and not self.threat_vehicles[id].is_evading_threat:
- # if the threat is in the threat radius and not currently
- # known to the module...
- # set flag to action threat
- self.threat_vehicles[id].is_evading_threat = True
-
- if self.threat_vehicles[id].distance > threat_radius_clear and self.threat_vehicles[id].is_evading_threat:
- # if the threat is known to the module and outside the
- # threat clear radius...
- # clear flag to action threat
- self.threat_vehicles[id].is_evading_threat = False
-
- self.active_threat_ids = [id for id in self.threat_vehicles.keys(
- ) if self.threat_vehicles[id].is_evading_threat]
-
- def update_threat_distances(self, latlonalt):
- '''update the distance between threats and vehicle'''
- for id in self.threat_vehicles.keys():
- threat_latlonalt = (self.threat_vehicles[id].state['lat'] * 1e-7,
- self.threat_vehicles[id].state['lon'] * 1e-7,
- self.threat_vehicles[id].state['altitude'])
-
- self.threat_vehicles[id].h_distance = self.get_h_distance(latlonalt, threat_latlonalt)
- self.threat_vehicles[id].v_distance = self.get_v_distance(latlonalt, threat_latlonalt)
-
- # calculate and set the total distance between threat and vehicle
- self.threat_vehicles[id].distance = sqrt(
- self.threat_vehicles[id].h_distance**2 + (self.threat_vehicles[id].v_distance)**2)
-
- def get_h_distance(self, latlonalt1, latlonalt2):
- '''get the horizontal distance between threat and vehicle'''
- (lat1, lon1, alt1) = latlonalt1
- (lat2, lon2, alt2) = latlonalt2
-
- lat1 = radians(lat1)
- lon1 = radians(lon1)
- lat2 = radians(lat2)
- lon2 = radians(lon2)
-
- dLat = lat2 - lat1
- dLon = lon2 - lon1
-
- # math as per mavextra.distance_two()
- a = sin(0.5 * dLat)**2 + sin(0.5 * dLon)**2 * cos(lat1) * cos(lat2)
- c = 2.0 * atan2(sqrt(a), sqrt(1.0 - a))
- return 6371 * 1000 * c
-
- def get_v_distance(self, latlonalt1, latlonalt2):
- '''get the horizontal distance between threat and vehicle'''
- (lat1, lon1, alt1) = latlonalt1
- (lat2, lon2, alt2) = latlonalt2
- return alt2 - alt1
-
- def check_threat_timeout(self):
- '''check and handle threat time out'''
- current_time = time.time()
- for id in self.threat_vehicles.keys():
- if current_time - self.threat_vehicles[id].update_time > self.ADSB_settings.timeout:
- # if the threat has timed out...
- del self.threat_vehicles[id] # remove the threat from the dict
- if self.mpstate.map:
- # remove the threat from the map
- self.mpstate.map.remove_object(id)
- # we've modified the dict we're iterating over, so
- # we'll get any more timed-out threats next time we're
- # called:
- return
-
- def mavlink_packet(self, m):
- '''handle an incoming mavlink packet'''
- if m.get_type() == "ADSB_VEHICLE":
-
- id = 'ADSB-' + str(m.ICAO_address)
- if id not in self.threat_vehicles.keys(): # check to see if the vehicle is in the dict
- # if not then add it
- self.threat_vehicles[id] = ADSBVehicle(id=id, state=m.to_dict())
- if self.mpstate.map: # if the map is loaded...
- icon = self.mpstate.map.icon(self.threat_vehicles[id].icon)
- popup = MPMenuSubMenu('ADSB', items=[MPMenuItem(name=id, returnkey=None)])
- # draw the vehicle on the map
- self.mpstate.map.add_object(mp_slipmap.SlipIcon(id, (m.lat * 1e-7, m.lon * 1e-7),
- icon, layer=3, rotation=m.heading*0.01, follow=False,
- trail=mp_slipmap.SlipTrail(colour=(0, 255, 255)),
- popup_menu=popup))
- else: # the vehicle is in the dict
- # update the dict entry
- self.threat_vehicles[id].update(m.to_dict())
- if self.mpstate.map: # if the map is loaded...
- # update the map
- self.mpstate.map.set_position(id, (m.lat * 1e-7, m.lon * 1e-7), rotation=m.heading*0.01)
-
- if m.get_type() == "GLOBAL_POSITION_INT":
- if self.mpstate.map:
- if len(self.active_threat_ids) > 0:
- threat_circle_width = 2
- else:
- threat_circle_width = 1
- # update the threat circle on the map
- threat_circle = mp_slipmap.SlipCircle("threat_circle", 3,
- (m.lat * 1e-7, m.lon * 1e-7),
- self.ADSB_settings.threat_radius,
- (0, 255, 255), linewidth=threat_circle_width)
- threat_circle.set_hidden(
- not self.ADSB_settings.show_threat_radius) # show the circle?
- self.mpstate.map.add_object(threat_circle)
-
- # update the threat clear circle on the map
- threat_radius_clear = self.ADSB_settings.threat_radius * \
- self.ADSB_settings.threat_radius_clear_multiplier
- threat_clear_circle = mp_slipmap.SlipCircle("threat_clear_circle", 3,
- (m.lat * 1e-7,
- m.lon * 1e-7),
- threat_radius_clear,
- (0, 255, 255), linewidth=1)
- # show the circle?
- threat_clear_circle.set_hidden(not self.ADSB_settings.show_threat_radius_clear)
- self.mpstate.map.add_object(threat_clear_circle)
-
- # we assume this is handled much more oftern than ADS-B messages
- # so update the distance between vehicle and threat here
- self.update_threat_distances((m.lat * 1e-7, m.lon * 1e-7, m.alt * 1e-3))
-
- def idle_task(self):
- '''called on idle'''
- if self.threat_timeout_timer.trigger():
- self.check_threat_timeout()
-
- if self.threat_detection_timer.trigger():
- self.perform_threat_detection()
- # TODO: possibly evade detected threats with ids in
- # self.active_threat_ids
-
-
-def init(mpstate):
- '''initialise module'''
- return ADSBModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_firmware.py b/src/drivers/MAVLinkServer/modules/mavproxy_firmware.py
deleted file mode 100644
index 477e157d5..000000000
--- a/src/drivers/MAVLinkServer/modules/mavproxy_firmware.py
+++ /dev/null
@@ -1,350 +0,0 @@
-#!/usr/bin/env python
-
-from __future__ import print_function
-
-'''firmware handling'''
-
-'''Currently handles firmware downloading but not flashing'''
-
-import time, os, fnmatch
-import json
-import threading
-import re
-
-from pymavlink import mavutil, mavparm
-from MAVProxy.modules.lib import mp_util
-from MAVProxy.modules.lib import mp_module
-
-class FirmwareModule(mp_module.MPModule):
-
- def __init__(self, mpstate):
- super(FirmwareModule, self).__init__(mpstate, "firmware", "firmware handling", public = True)
- self.add_command('fw', self.cmd_fw, "firmware handling",
- [" (OPT)",
- "list "])
- self.downloaders_lock = threading.Lock()
- self.downloaders = {}
- self.manifests_parse()
-
- def usage(self):
- '''show help on a command line options'''
- return '''Usage: fw
-
-# Use the column headings from "list" as filter terms
-
-# e.g. list latest releases for PX4-v2 platform:
-fw list latest=1 platform=PX4-v2
-
-# e.g. download most recent official PX4-v2 release for quadcopters:
-fw download releasetype=OFFICIAL frame=quad platform=PX4-v2
-'''
-
- def cmd_fw_help(self):
- '''show help on fw command'''
- print(self.usage())
-
- def cmd_fw(self, args):
- '''execute command defined in args'''
- if len(args) == 0:
- print(self.usage())
- return
- rest = args[1:]
- if args[0] == "manifest":
- self.cmd_fw_manifest(rest)
- elif args[0] == "list":
- self.cmd_fw_list(rest)
- elif args[0] == "download":
- self.cmd_fw_download(rest)
- elif args[0] in ["help","usage"]:
- self.cmd_fw_help(rest)
- else:
- print(self.usage())
-
- def frame_from_firmware(self, firmware):
- '''extract information from firmware, return pretty string to user'''
- # see Tools/scripts/generate-manifest for this map:
- frame_to_mavlink_dict = {
- "quad": "QUADROTOR",
- "hexa": "HEXAROTOR",
- "y6": "ARDUPILOT_Y6",
- "tri": "TRICOPTER",
- "octa": "OCTOROTOR",
- "octa-quad": "ARDUPILOT_OCTAQUAD",
- "heli": "HELICOPTER",
- "Plane": "FIXED_WING",
- "Tracker": "ANTENNA_TRACKER",
- "Rover": "GROUND_ROVER",
- "PX4IO": "ARDUPILOT_PX4IO",
- }
- mavlink_to_frame_dict = { v : k for k,v in frame_to_mavlink_dict.items() }
- x = firmware["mav-type"]
- if firmware["mav-autopilot"] != "ARDUPILOTMEGA":
- return x
- if x in mavlink_to_frame_dict:
- return mavlink_to_frame_dict[x]
-
- return x
-
- def semver_from_firmware(self, firmware):
- '''Extract a tuple of (major,minor,patch) from a firmware instance'''
- version = firmware.get("mav-firmware-version-major",None)
- if version is None:
- return (None,None,None)
- return (firmware["mav-firmware-version-major"],
- firmware["mav-firmware-version-minor"],
- firmware["mav-firmware-version-patch"])
-
- def row_is_filtered(self, row_subs, filters):
- '''returns True if row should NOT be included according to filters'''
- for filtername in filters:
- filtervalue = filters[filtername]
- if filtername in row_subs:
- row_subs_value = row_subs[filtername]
- if str(row_subs_value) != str(filtervalue):
- return True
- else:
- print("fw: Unknown filter keyword (%s)" % (filtername,))
- return False
-
- def filters_from_args(self, args):
- '''take any argument of the form name=value anmd put it into a dict; return that and the remaining arguments'''
- filters = dict()
- remainder = []
- for arg in args:
- try:
- equals = arg.index('=')
- # anything ofthe form key-value is taken as a filter
- filters[arg[0:equals]] = arg[equals+1:];
- except ValueError:
- remainder.append(arg)
- return (filters,remainder)
-
- def all_firmwares(self):
- ''' return firmware entries from all manifests'''
- all = []
- for manifest in self.manifests:
- for firmware in manifest["firmware"]:
- all.append(firmware)
- return all
-
- def rows_for_firmwares(self, firmwares):
- '''provide user-readable text for a firmware entry'''
- rows = []
- i = 0
- for firmware in firmwares:
- frame = self.frame_from_firmware(firmware)
- row = {
- "seq": i,
- "platform": firmware["platform"],
- "frame": frame,
-# "type": firmware["mav-type"],
- "releasetype": firmware["mav-firmware-version-type"],
- "latest": firmware["latest"],
- "git-sha": firmware["git-sha"][0:7],
- "format": firmware["format"],
- "_firmware": firmware,
- }
- (major,minor,patch) = self.semver_from_firmware(firmware)
- if major is None:
- row["version"] = ""
- row["major"] = ""
- row["minor"] = ""
- row["patch"] = ""
- else:
- row["version"] = firmware["mav-firmware-version"]
- row["major"] = major
- row["minor"] = minor
- row["patch"] = patch
-
- i += 1
- rows.append(row)
-
- return rows
-
- def filter_rows(self, filters, rows):
- '''returns rows as filtered by filters'''
- ret = []
- for row in rows:
- if not self.row_is_filtered(row, filters):
- ret.append(row)
- return ret
-
- def filtered_rows_from_args(self, args):
- '''extracts filters from args, rows from manifests, returns filtered rows'''
- if len(self.manifests) == 0:
- print("fw: No manifests downloaded. Try 'manifest download'")
- return None
-
- (filters,remainder) = self.filters_from_args(args)
- all = self.all_firmwares()
- rows = self.rows_for_firmwares(all)
- filtered = self.filter_rows(filters, rows)
- return (filtered, remainder)
-
- def cmd_fw_list(self, args):
- '''cmd handler for list'''
- stuff = self.filtered_rows_from_args(args)
- if stuff is None:
- return
- (filtered, remainder) = stuff
- print("")
- print(" seq platform frame major.minor.patch releasetype latest git-sha format")
- for row in filtered:
- print("{seq:>5} {platform:<13} {frame:<10} {version:<10} {releasetype:<9} {latest:<6} {git-sha} {format}".format(**row))
-
- def cmd_fw_download(self, args):
- '''cmd handler for downloading firmware'''
- import multiprocessing
- stuff = self.filtered_rows_from_args(args)
- if stuff is None:
- return
- (filtered, remainder) = stuff
- if len(filtered) == 0:
- print("fw: No firmware specified")
- return
- if len(filtered) > 1:
- print("fw: No single firmware specified")
- return
-
- firmware = filtered[0]["_firmware"]
- url = firmware["url"]
-
- try:
- print("fw: URL: %s" % (url,))
- filename=os.path.basename(url)
- files = []
- files.append((url,filename))
- child = multiprocessing.Process(target=mp_util.download_files, args=(files,))
- child.start()
- except Exception as e:
- print("fw: download failed")
- print(e)
-
- def fw_manifest_usage(self):
- '''return help on manifest subcommand'''
- return("Usage: fw manifest ")
-
- def cmd_fw_manifest_help(self):
- '''show help on manifest subcommand'''
- print(self.fw_manifest_usage())
-
- def find_manifests(self):
- '''locate manifests and return filepaths thereof'''
- manifest_dir = mp_util.dot_mavproxy()
-
- ret = []
- for file in os.listdir(manifest_dir):
- try:
- file.index("manifest")
- ret.append(os.path.join(manifest_dir,file))
- except ValueError:
- pass
- return ret
-
- def cmd_fw_manifest_list(self):
- '''list manifests'''
- for filepath in self.find_manifests():
- print(filepath)
-
- def cmd_fw_manifest_load(self):
- '''handle command to load manifests - hidden command since these should only change with fw commands'''
- self.manifests_parse()
-
- def cmd_fw_manifest_purge(self):
- '''remove all downloaded manifests'''
- for filepath in self.find_manifests():
- os.unlink(filepath)
- self.manifests_parse()
-
- def cmd_fw_manifest(self, args):
- '''cmd handler for manipulating manifests'''
- if len(args) == 0:
- print(self.fw_manifest_usage())
- return
- rest = args[1:]
- if args[0] == "download":
- return self.manifest_download()
- if args[0] == "list":
- return self.cmd_fw_manifest_list()
- if args[0] == "load":
- return self.cmd_fw_manifest_load()
- if args[0] == "purge":
- return self.cmd_fw_manifest_purge()
- if args[0] == "help":
- return self.cmd_fw_manifest_help()
- else:
- print("fw: Unknown manifest option (%s)" % args[0])
- print(fw_manifest_usage())
-
- def manifest_parse(self, path):
- '''parse manifest at path, return JSON object'''
- print("fw: parsing manifests")
- content = open(path).read()
- return json.loads(content)
-
- def semver_major(self,semver):
- '''return major part of semver version number. Avoids "import semver"'''
- return int(semver[0:semver.index(".")])
-
- def manifest_path_is_old(self, path):
- '''return true if path is more than a day old'''
- mtime = os.path.getmtime(path)
- return (time.time() - mtime) > 24*60*60
-
- def manifests_parse(self):
- '''parse manifests present on system'''
- self.manifests = []
- for manifest_path in self.find_manifests():
- if self.manifest_path_is_old(manifest_path):
- print("fw: Manifest (%s) is old; consider 'manifest download'" % (manifest_path))
- manifest = self.manifest_parse(manifest_path)
- if self.semver_major(manifest["format-version"]) != 1:
- print("fw: Manifest (%s) has major version %d; MAVProxy only understands version 1" % (manifest_path,manifest["format-version"]))
- continue
- self.manifests.append(manifest)
-
- def download_url(self, url, path):
- mp_util.download_files([(url,path)])
-
- def idle_task(self):
- '''called rapidly by mavproxy'''
- if self.downloaders_lock.acquire(False):
- removed_one = False
- for url in self.downloaders.keys():
- if not self.downloaders[url].is_alive():
- print("fw: Download thread for (%s) done" % url)
- del self.downloaders[url]
- removed_one = True
- if removed_one and not self.downloaders.keys():
- # all downloads finished - parse them
- self.manifests_parse()
-
- self.downloaders_lock.release()
-
- def make_safe_filename_from_url(self, url):
- '''return a version of url safe for use as a filename'''
- r = re.compile("([^a-zA-Z0-9_.-])")
- filename = r.sub(lambda m : "%" + str(hex(ord(str(m.group(1))))).upper(), url)
- return filename
-
- def manifest_download(self):
- '''download manifest files'''
- import multiprocessing
- if self.downloaders_lock.acquire(False):
- if len(self.downloaders):
- # there already exist downloader threads
- self.downloaders_lock.release()
- return
-
- for url in ['http://firmware.ardupilot.org/manifest.json']:
- filename = self.make_safe_filename_from_url(url)
- path = mp_util.dot_mavproxy("manifest-%s" % filename)
- self.downloaders[url] = threading.Thread(target=self.download_url, args=(url, path))
- self.downloaders[url].start()
- self.downloaders_lock.release()
- else:
- print("fw: Failed to acquire download lock")
-
-def init(mpstate):
- '''initialise module'''
- return FirmwareModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/modules/mavproxy_signing.py b/src/drivers/MAVLinkServer/modules/mavproxy_signing.py
deleted file mode 100644
index d4b81ff7d..000000000
--- a/src/drivers/MAVLinkServer/modules/mavproxy_signing.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env python
-'''
-control MAVLink2 signing
-'''
-
-from pymavlink import mavutil
-import time, struct, math, sys
-
-from MAVProxy.modules.lib import mp_module
-from MAVProxy.modules.lib import mp_util
-
-if mp_util.has_wxpython:
- from MAVProxy.modules.lib.mp_menu import *
-
-class SigningModule(mp_module.MPModule):
-
- def __init__(self, mpstate):
- super(SigningModule, self).__init__(mpstate, "signing", "signing control", public=True)
- self.add_command('signing', self.cmd_signing, "signing control",
- [""])
- self.allow = None
-
- def cmd_signing(self, args):
- '''handle link commands'''
- usage = "signing: passphrase"
- if len(args) == 0:
- print(usage)
- elif args[0] == 'setup':
- self.cmd_signing_setup(args[1:])
- elif args[0] == 'key':
- self.cmd_signing_key(args[1:])
- elif args[0] == 'disable':
- self.cmd_signing_disable(args[1:])
- elif args[0] == 'remove':
- self.cmd_signing_remove(args[1:])
- else:
- print(usage)
-
- def passphrase_to_key(self, passphrase):
- '''convert a passphrase to a 32 byte key'''
- import hashlib
- h = hashlib.new('sha256')
- h.update(passphrase)
- return h.digest()
-
- def cmd_signing_setup(self, args):
- '''setup signing key on board'''
- if len(args) == 0:
- print("usage: signing setup passphrase")
- return
- passphrase = args[0]
- key = self.passphrase_to_key(passphrase)
- secret_key = []
- for b in key:
- secret_key.append(ord(b))
-
- epoch_offset = 1420070400
- now = max(time.time(), epoch_offset)
- initial_timestamp = int((now - epoch_offset)*1e5)
- self.master.mav.setup_signing_send(self.target_system, self.target_component,
- secret_key, initial_timestamp)
- print("Sent secret_key")
- self.cmd_signing_key([passphrase])
-
-
- def allow_unsigned(self, mav, msgId):
- '''see if an unsigned packet should be allowed'''
- if self.allow is None:
- self.allow = {
- mavutil.mavlink.MAVLINK_MSG_ID_RADIO : True,
- mavutil.mavlink.MAVLINK_MSG_ID_RADIO_STATUS : True
- }
- if msgId in self.allow:
- return True
- if self.settings.allow_unsigned:
- return True
- return False
-
- def cmd_signing_key(self, args):
- '''set signing key on connection'''
- if len(args) == 0:
- print("usage: signing setup passphrase")
- return
- passphrase = args[0]
- key = self.passphrase_to_key(passphrase)
- self.master.setup_signing(key, sign_outgoing=True, allow_unsigned_callback=self.allow_unsigned)
- print("Setup signing key")
-
- def cmd_signing_disable(self, args):
- '''disable signing locally'''
- self.master.disable_signing()
- print("Disabled signing")
-
- def cmd_signing_remove(self, args):
- '''remove signing from server'''
- self.master.mav.setup_signing_send(self.target_system, self.target_component, [0]*32, 0)
- self.master.disable_signing()
- print("Removed signing")
-
-def init(mpstate):
- '''initialise module'''
- return SigningModule(mpstate)
diff --git a/src/drivers/MAVLinkServer/setup.py b/src/drivers/MAVLinkServer/setup.py
new file mode 100644
index 000000000..1bb4e81f3
--- /dev/null
+++ b/src/drivers/MAVLinkServer/setup.py
@@ -0,0 +1,55 @@
+from setuptools import setup
+
+version = "1.4.38"
+
+setup(name='MAVProxy',
+ version=version,
+ zip_safe=True,
+ description='MAVProxy MAVLink ground station',
+ long_description='''A MAVLink protocol proxy and ground station. MAVProxy
+is oriented towards command line operation, and is suitable for embedding in
+small autonomous vehicles or for using on ground control stations. It also
+features a number of graphical tools such as a slipmap for satellite mapping
+view of the vehicles location, and status console and several useful vehicle
+control modules. MAVProxy is extensible via a modules system - see the modules
+subdirectory for some example modules. MAVProxy was developed by CanberraUAV
+for use in the 2012 Outback Challenge, and includes a module for the
+CanberraUAV search and rescue system. See
+http://Dronecode.github.io/MAVProxy/ for more information
+on how to use MAVProxy.''',
+ url='https://github.com/Dronecode/MAVProxy',
+ author='Andrew Tridgell',
+ author_email='andrew@tridgell.net',
+ classifiers=[
+ 'Development Status :: 4 - Beta',
+ 'Environment :: Console',
+ 'Intended Audience :: Science/Research',
+ 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python :: 2.7',
+ 'Topic :: Scientific/Engineering'],
+ license='GPLv3',
+ packages=['MAVProxy',
+ 'MAVProxy.modules',
+ 'MAVProxy.modules.mavproxy_map',
+ 'MAVProxy.modules.mavproxy_misseditor',
+ 'MAVProxy.modules.mavproxy_smartcamera',
+ 'MAVProxy.modules.lib',
+ 'MAVProxy.modules.lib.ANUGA',
+ 'MAVProxy.modules.lib.optparse_gui'],
+ # note that we do not include all the real dependencies here (like matplotlib etc)
+ # as that breaks the pip install. It seems that pip is not smart enough to
+ # use the system versions of these dependencies, so it tries to download and install
+ # large numbers of modules like numpy etc which may be already installed
+ install_requires=['pymavlink>=1.1.50',
+ 'pyserial'],
+ scripts=['MAVProxy/mavproxy.py',
+ 'MAVProxy/tools/mavflightview.py',
+ 'MAVProxy/tools/MAVExplorer.py',
+ 'MAVProxy/modules/mavproxy_map/mp_slipmap.py',
+ 'MAVProxy/modules/mavproxy_map/mp_tile.py'],
+ package_data={'MAVProxy':
+ ['modules/mavproxy_map/data/*.jpg',
+ 'modules/mavproxy_map/data/*.png',
+ 'tools/graphs/*.xml']}
+ )
diff --git a/src/drivers/MAVLinkServer/tools/MAVExplorer.bat b/src/drivers/MAVLinkServer/tools/MAVExplorer.bat
deleted file mode 100644
index 7a7ee38cf..000000000
--- a/src/drivers/MAVLinkServer/tools/MAVExplorer.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-cd ..\..\
-python setup.py build install --user
-python .\MAVProxy\tools\MAVExplorer.py
-pause
diff --git a/src/drivers/MAVLinkServer/uav_viewer.cfg b/src/drivers/MAVLinkServer/uav_viewer.cfg
deleted file mode 100644
index 90b1edf75..000000000
--- a/src/drivers/MAVLinkServer/uav_viewer.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-UAVViewer.Camera.Proxy=Camera:default -h 0.0.0.0 -p 9997:ws -h 0.0.0.0 -p 11000
-UAVViewer.Pose3D.Proxy=Pose3D:default -h 0.0.0.0 -p 9998:ws -h 0.0.0.0 -p 11003
-UAVViewer.CMDVel.Proxy=CMDVel:default -h 0.0.0.0 -p 9999:ws -h 0.0.0.0 -p 11002
-UAVViewer.Navdata.Proxy=Navdata:default -h 0.0.0.0 -p 9001:ws -h 0.0.0.0 -p 11005
-UAVViewer.Extra.Proxy=Extra:default -h 0.0.0.0 -p 9002:ws -h 0.0.0.0 -p 11004
\ No newline at end of file